socket.emit发出两次

时间:2014-02-03 10:02:21

标签: node.js socket.io

我使用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.
     });
 });

1 个答案:

答案 0 :(得分: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, 您可以clientssocket.id数组中保存套接字ID而不是整个套接字对象。