如何在用户连接时获取用户的 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 ");
});
如果目标已连接或未连接,您也可以实现已读/未读
我想在用户连接时向他们广播一条消息,但只向该用户广播。
我如何在他们连接时获取他们的套接字 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 ");
});
如果目标已连接或未连接,您也可以实现已读/未读