Node.js私聊系统算法

时间:2018-02-08 11:08:46

标签: node.js sockets socket.io chat emit

我使用expresssocket.io

我有两种用户类型

  1. 网站访问者(网站用户)

  2. 管理员(网站管理员)

  3. 当访问者访问该网站时,我将用户数据(浏览器,位置,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总是针对浏览器的选项卡进行更改。

1 个答案:

答案 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)