Этот вопрос уже дан ответ, но я не понимаю его вообще. Вы можете найти его по этой ссылке.Socket IO output too many times
socket.on calls its callback too many times
У меня такая же проблема, как этот парень. Я пытаюсь сделать чат-программу с socket.io, но когда присоединяется более одного пользователя, каждое сообщение выводит количество раз, сколько пользователей было подключено.
Например, когда один пользователь подключен, и он отправляет сообщение. Он выводится один раз. Когда два пользователя подключены, каждое их сообщение выводится дважды. Когда три пользователя подключены, каждое их сообщение выводится три раза.
Вот мой код клиента сторона:
$('document').ready(function() {
var server = io.connect('http://localhost:8888');
$('.chat').keydown(function(event){
var save = this;
if(event.which == 13){
server.emit('message', $(save).val());
$(save).val('');
return false;
}
});
server.on('incoming', function(message){
$('#textfield').append("<p>" + message + "</p>");
});
});
Вот мой код на стороне сервера:
var socket_io = require('socket.io').listen(8888).sockets;
socket_io.on('connection', function(socket){
socket.on('message', function(message){
socket_io.emit('incoming', message)
});
});
Спасибо!
Попробуйте поместить часть сокета на стороне клиента вне поля '$ ('document'). Ready'. Кстати, вы можете запустить сокет 'var io = require ('socket.io') (8888);' Я не уверен, что делает '.sockets', но вам это действительно не нужно. – Cludch
Это не сработало. – studentTrader24
Если я поместил это снаружи, то jquery не работает по какой-то причине. – studentTrader24