我使用express
,socket.io
。
我有两种用户类型
网站访问者(网站用户)
管理员(网站管理员)
当访问者访问该网站时,我将用户数据(浏览器,位置,IP ..等)添加到VisitorObject
,并向管理员显示VisitorObject
。
当管理员想要向访问者发送消息时,我应该只发出管理员想要输入的用户的功能。
我不想使用
io.sockets.emit('newMessage', message);
我想像这样使用
io.sockets[id].emit('newMessage', message);
EDIT ---
我使用
连接node.js服务器 var socket = io.connect('http://127.0.0.1:3000', {query: 'id=' + id});
此id不是套接字ID,它是用户ID。我不想在发送消息时使用socket.id.我想使用用户ID。因为socket.id总是针对浏览器的选项卡进行更改。
答案 0 :(得分:2)
尝试这样的事情
// sending to individual socketid (private message)
socket.to(<socketid>).emit('newMessage', message);
或
io.to(<socketid>).emit('newMessage', message);
https://socket.io/docs/emit-cheatsheet/
如果你需要通过user_id发出,你可以这样做
socket.join(user_id); // when user connected
而不是
io.to(user_id).emit('newMessage', message)