将消息发送到唯一的套接字

时间:2011-10-31 13:40:05

标签: node.js chat socket.io

我使用node.js和socket.io来创建聊天应用程序。如何将消息发送到另一个套接字,我只知道套接字的id或用户名。没有房间,客户一对一聊天。

2 个答案:

答案 0 :(得分:25)

使用Socket.IO,您不仅限于在连接函数的回调中使用套接字对象。您可以创建一个对象来存储特定用户名的套接字对象,并查找套接字以在客户端发出消息时向其发送消息。您需要在每条消息中传输预期的目标。

示例:

var sockets = {};

...

io.on('connection', function(socket){
    socket.on('set nickname', function (name) {
        sockets[name] = socket;
    });
    socket.on('send message', function (message, to) {
        sockets[to].emit(message);
    });
});

查看examples page of Socket.IO's website上的更多示例。

答案 1 :(得分:0)

您可以检查所有套接字的用户名属性,如下所示:

socket.on('send message', function(message,to){

    io.sockets.clients().forEach(function (socket) {

        if (socket.username==to){socket.emit(message);} 

    });

 });