是否有另一种使用Socket.io(1.0+)发送私人消息的方法?

时间:2016-03-25 07:15:03

标签: node.js socket.io

我正在处理由URL中的会话代码共享的基于会话的简单应用程序。我决定为连接到套接字的每个客户端生成并分配一个较短的用户友好唯一ID,并且创建会话的客户端会导致使用其ID创建socket.io空间。

直到后来我才意识到socket.io中的私人消息传递机制依赖于每个客户端被分配到由其ID命名的房间。这意味着因为我的会话空间是以创建者的套接字ID命名的,所以使用.to()不会向该客户端发送消息,而是现在已分配给该会议室的所有客户端。

我可以通过需要重新设计的方式来解决这个问题,但首先我想询问是否有其他方式通过他/她的ID向特定客户发送消息。

1 个答案:

答案 0 :(得分:0)

/*create an array of clients, where key is the name of user and value is its unique socket id(generated by socket only, you do not have to generate it) during connection.*/
var clients = {};
clients[data.username] = {
"socket": socket.id
};
//on server side
socket.on('private-message', function(data){
  io.sockets.connected[clients[data.username].socket].emit("add-      message", data);
});
//on client side
socket.emit("private-message", {
"username": userName,
"content": $(this).find("textarea").val()
});
socket.on("add-message", function(data){
notifyMe(data.content,data.username);
});