套接字仅发送给一个用户

时间:2019-01-09 18:31:22

标签: node.js socket.io

我一直在寻找anwser,但是其中大多数我无法与我的代码完全连接,因此我希望获得帮助。

我想发送特定用户的消息,例如2个人之间的聊天。

例如,如果我选择约翰,我怎么能只给他寄信?我在这方面遇到了很多麻烦

enter image description here

app.js

io.on('connection', function (socket) { 
  socket.on('chat', function (data) {
      console.log(data);

      //Specific user
      //socket.broadcast.to(socketid).emit('message', 'Hello');

  });
});

我有一个mongodb数据库,那么如何指定具有选择用户的用户ID的套接字ID?

2 个答案:

答案 0 :(得分:1)

  

以下代码可用于将消息发送到特定客户端。   需要注意的是,每个连接的客户端都有一个唯一的套接字ID。   将该ID存储在数组中。您可以呼叫具有该ID的任何用户。

var id=[];
    io.on('connection', function (socket) { 
      socket.on('chat', function (data) {
          console.log(data);
    id.push(${socket.id});


      });
    });

   //to send to specific user
 io.to(socket#id).emit('hey!')

答案 1 :(得分:0)

您必须创建一个基于用户的数组。在这里,您可以获得一个特殊的套接字:

var users = [];

io.on('connection', function (socket) {
    users.put(socket);

    socket.on('chat', function (data) {
        console.log(data);

        users[0].emit('chat', data);
    });
});

您可以使用基于数组或基于对象的变量(在此处可以将其与用户名一起存储,但是必须实现一个过程以在连接可用后设置用户名)。