【问题标题】:socket.emit emits two timessocket.emit 发射两次
【发布时间】:2014-02-26 18:10:05
【问题描述】:

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

【问题讨论】:

  • saveConverse 在听什么?
  • saveConverse 是客户端触发的事件,用于保存对话。然后它被发送给一个特定的客户,它被发送给谁。

标签: node.js socket.io


【解决方案1】:

尝试替换

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

用这个:

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

因为这是向特定客户端发出的正确方法。阿斯洛, 您可以通过socket.idclients 数组中保存套接字ID 而不是整个套接字对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 2017-11-28
    • 2022-11-24
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多