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