[英]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.