繁体   English   中英

套接字-通过ID向用户发送消息

[英]Socket - send message to user by ID

我正在使用带有ws (套接字库)的Node.js,但在查找特定用户的套接字时遇到了一些麻烦。
当用户连接到我的套接字服务器时,应该通过他的userID或socketID将他的套接字objct保留在一个大的大型对象中,如下所示:

var bigMassiveObject = {};
ws.on('connection', function(socket){
var userID //somehow get the userID
   bigMassiveObject[userID] = socket;
   // to find the socket
   socket = bigMassiveObject[userID];
   socket.send("hi");
})

以便以后我可以通过该ID向他发送消息,但是仅保留他的socketID更好吗? 这样,我们不存储所有套接字,而是仅存储ID,然后以某种方式(我不知道)通过该ID向他发送消息
这是我正在寻找的:

var smallObject = {};
ws.on('connection', function(socket){
var userID //somehow get the userID
   smallObject[userID] = socketID;
   // to find the socket
   var socket = generateSocketObjectBySocketID(socketID);
   socket.send("tada!");
})

所以问题是,无论如何,是否有通过socketID(或useID)生成套接字的? 这样我们就不会将所有这些大套接字对象存储在内存中,也不会有任何内存泄漏:)

只是,

这就是您需要的:

  io.to(socket.id).emit("event", data);

每当用户加入服务器时,都会生成包含ID的套接字详细信息。ID确实有助于向特定人员发送消息。

首先,我们需要将所有socket.ids存储在数组中,

var people = {};

  people[name] =  socket.id;

这里的名字是接收者的名字。 例:

  people["trojan"]=2387423cjhgfwerwer23;

因此,现在我们在发送消息时都可以使用接收者名称获取该socket.id:

为此,我们需要知道接收方名称。您需要向服务器发出接收方名称。

最后一件事是:

   socket.on('chat message', function(data){
   io.to(people[data.reciever]).emit('chat message', data.msg);
   });

希望这对你有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM