【问题标题】:How to send multiple client using socket.id that are connected to socket (Nodejs, Socket.io)如何使用连接到套接字的socket.id发送多个客户端(Nodejs,Socket.io)
【发布时间】:2018-05-30 10:28:30
【问题描述】:
socket.on('private-message', function(data){
        console.log("Sending: " + data.content + " to " + data.username);
        console.log(clients[data.username].socket.join(', '));
        if (clients[data.username]){    
            io.sockets.connected[clients[data.username].socket].emit("add-message", data);
        } else {
            console.log("User does not exist: " + data.username);
        }
    });

这段代码运行良好,但我想要的是,我想发送多个连接的客户端,使用它们的套接字 id 连接到套接字。

io.sockets.connected[reciver.socketid].emit("add-message", data);

有没有办法或者是否可以写一组receiver socket.id。我不想使用 for 循环。

【问题讨论】:

  • socket.broadcast.emit('broadcast', '你好朋友们!');
  • 在该广播中是您的“添加消息”
  • 如果您有任何问题,请告诉我。
  • 我不想全部广播。我只想使用他们的 socket.id 发出特定或选定的客户端。不是全部..
  • 那么你应该循环或创建一个特定的预期客户端数组并将消息发送给我的朋友。

标签: node.js socket.io


【解决方案1】:

请随意使用我的 Socket.IO 备忘单!

// Add socket to room
socket.join('some room');

// Remove socket from room
socket.leave('some room');

// Send to current client
socket.emit('message', 'this is a test');

// Send to all clients include sender
io.sockets.emit('message', 'this is a test');

// Send to all clients except sender
socket.broadcast.emit('message', 'this is a test');

// Send to all clients in 'game' room(channel) except sender
socket.broadcast.to('game').emit('message', 'this is a test');

// Send to all clients in 'game' room(channel) include sender
io.sockets.in('game').emit('message', 'this is a test');

// Send to individual socket id
io.sockets.socket(socketId).emit('message', 'this is a test');

2021 年更新

这是 Socket.IO 的 official cheatsheet

【讨论】:

    【解决方案2】:

    是的,现在解决了!!下面我们来回答一下。

    io.to(socketid1).to(socketid2).emit("add-message", data);
    

    或者您可以通过将客户加入群组来实现此目的。并向该组发送消息。

    加入

    socket.join(data.username);
    

    发射

    socket.join(data.username);

    这让我免于编写大量代码

    【讨论】:

      【解决方案3】:

      您可以让所有用户订阅一个房间,然后您可以发出消息。

      socket.join('some room');
      

      【讨论】:

        【解决方案4】:

        啊!我没有正确阅读文档!谢谢大家!:)

        我正在寻找这个... io.sockets.emit('Test1', response); 我正在使用这个... socket.emit("Test1", response);

        :)

        【讨论】:

          猜你喜欢
          • 2019-11-19
          • 1970-01-01
          • 2011-05-04
          • 1970-01-01
          • 1970-01-01
          • 2018-02-08
          • 1970-01-01
          • 2021-11-09
          • 1970-01-01
          相关资源
          最近更新 更多