繁体   English   中英

连接时如何获取用户的socket.id?

[英]How can I get the socket.id of a user when they connect?

我想在用户连接时向他们广播一条消息,但只向该用户广播。
我如何在他们连接时获取他们的套接字 ID,以便我可以使用io.to(theirSocketID).emit('chat message', 'Welcome'); ?

每次用户连接到数组时,您都可以存储数据

  var clients = [];

io.on("connection", (socket) => {
  console.log("new user connected");
  socket.on("new user", function (data) {
    // console.log(clients[data])
    if (data in clients) {
      let index = clients.indexOf(data);
      if (index !== -1) {
        clients.splice(index, 1);
      }
      socket.nickname = data;
      clients[socket.nickname] = socket;
    } else {
      socket.nickname = data;
      clients[socket.nickname] = socket;
    }
    console.log("new user : " + socket.nickname);
  });

并在断开连接时

 socket.on("disconnect", () => {
    console.log("user disconnected");
    delete clients[socket.nickname];
  });

这就是我为私人消息传递存储套接字 ID 的一贯做法

这就是我的聊天套接字的样子

socket.on("chat", function (data) {
    var id = data.id;
    if (clients.hasOwnProperty(id)) {
      io.to(clients[id]["id"]).emit("chat", data);
      console.log(clients[id]["id"]);
    } else {
      console.log("\nTarget Device Is Offline or Doesn't exist\n ");
  });

如果目标已连接,您还可以实现读/未读

暂无
暂无

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

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