2014-10-12 3 views
0

Пытается достичь простой цели. Отправка данных с сервера на сервер через Socket.IO.Socket.IO Клиент не отправляет на сервер

Однако проблема в том, что я пытаюсь использовать это через веб-сервер в этом случае «http://example.com/application.html».

Серверное приложение работает нормально, а также клиент без каких-либо ошибок. Однако сервер никогда не получает данные, отправленные с клиента.

Client (index.html):

.. <body> 

<ul id="messages"></ul> 
<form action=""> 
    <input id="sentMessage" autocomplete="off" /><button>Send</button> 
</form> 

<script src="http://code.jquery.com/jquery-1.11.1.js"></script> 
<script src="/socket.io/socket.io.js"></script> 
<script> 
var socket = io(); 

$('form').submit(function(){ 
    socket.emit('chat message', $('#sentMessage').val()); 
    $('#sentMessage').val(''); 
    return false; 
}); 

socket.on('chat message', function(msg){ 
    $('#messages').append($('<li>').text(msg)); 
}); 

</script> 

</body> .. 

сервера (app.js), проходит через Node.js ЦМД:

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

http.listen(8080); 

app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
}); 

io.on('connection', function(socket) { 
    console.log('A user connected'); 

    socket.on('disconnect', function() { 
     console.log('A user disconnect'); 
    }); 

    socket.on('chat message', function(msg){ 
     io.emit('chat message', msg); 
     console.log('Message: ' + msg); 
    }); 

}); 

Короче говоря, результат должен быть что на странице «http://example.com/application.html» я должен иметь возможность отправить сообщение на сервер, который затем отправляет сообщение другим подключенным клиентам, включая меня, но этого не происходит. Это действительно стоит заметить, что Localhost не является вариантом, так как мне нужно, чтобы он работал в моем домене. Все работает на одной машине.

+0

Отображается ли «Пользователь подключен» к серверной консоли? – mscdex

+0

Нет, ничего не отправлено на сервер. –

+0

Попробуйте добавить 'localStorage.debug = '*';' перед вашим 'var socket = io();' и проверьте свою консоль браузера для вывода при загрузке страницы. – mscdex

ответ

0

Вы забыли подключиться к серверу.

var socket = io.connect('http://hereIsAdressToYourServer.com:8080'); 
+0

'io.connect()' автоматически вызывается по умолчанию. – mscdex

+1

Попробуйте указать домен и порт, как я пишу выше. – Zav

+1

Ответ является следствием этого. Похоже, его сценарий просто соединяется с неправильным местом, и все. – Zav

0

У меня возникла проблема при запуске приложения на heroku, где порты обрабатывались автоматически. Вот как я должен был установить порт.

var port = process.env.PORT || 3000 http.listen(port, function(){ console.log('listening on *:3000'); });

Это решило мою проблему. Может, это и ваша проблема?

Смежные вопросы