如何使用连接到套接字的socket.id发送多个客户端(Nodejs,Socket.io)

时间:2018-05-30 10:28:31

标签: node.js socket.io

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);

有没有办法或者是否可以编写接收器socket.id组。我不想用于循环。

4 个答案:

答案 0 :(得分:2)

是的,它现在解决了!!我们在这里回答。

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

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

加入

socket.join(data.username);

发射

socket.join(data.username);

这使我免于编写大量代码

答案 1 :(得分:2)

随意使用我的Socket.IO Cheatsheet!

// Socket.IO Cheatsheet

// 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');

答案 2 :(得分:0)

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

int main(void) { //Note minimum signature of main function
    ListNode *list1=NULL;

    add(&list1, 3);//pass address of object, not object itself
    add(&list1, 3);

答案 3 :(得分:0)

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

我一直在寻找这个... io.sockets.emit('Test1',response); 我在用这个... socket.emit(“ Test1”,response);

:)