2014-02-03 5 views
0

У меня возникла проблема с socket.emit с помощью socket.io. У меня есть объект подключенных клиентов, когда я отправляю сообщение конкретному клиенту с помощью socket.emit, он испускает два раза! любое решение.socket.emit испускает два раза

вот код.

var clients ={}; 
    io.sockets.on('connection',function(socket){ 
    socket.on('verifyId',function(data){ 
     clients[data.user_id]=[]; 
      clients[data.user_id].push(socket); 
     }); 

    socket.on('saveConverse',function(data){ 
    user1=clients[data.to]; 
    if(clients[data.to]) 
    user1[0].emit('newMessage',{msg:'hi, here is a new message!'}); 
      //here it is emitted two times. 
    }); 
}); 
+0

Что такое 'saveConverse'? – Matt

+0

saveConverse - это событие, инициированное клиентом, чтобы сохранить разговор. и затем он испускается конкретному клиенту, которому он отправляется. – Muhammad

ответ

0

Попробуйте заменить

user1[0].emit('newMessage',{msg:'hi, here is a new message!'}); 

с этим:

io.sockets.socket(socketid).emit('newMessage',{msg:'hi, here is a new message!'}); 

Поскольку это правильный способ, чтобы излучать к конкретному клиенту. Aslo, вы можете сохранить идентификаторы сокетов вместо всего объекта сокета в массиве clients на socket.id.

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