Nodejs Socket.io 从 on( "connection" ) 事件获取用户



有没有办法从socket.io连接事件中确定用户?

以下代码当前用于从前端获取用户对象:

io.on("connection", async (socket: Socket) => {
socket.on("user-joined", (user) => {
console.log("front end says hi", user);
connectedUsers.push(user);
});
});

我想知道的是,是否有办法在连接事件中立即传递用户,这样我就不必听后续的"用户已加入"消息了?

在客户端,我们似乎可以将auth与连接一起传递。

发件人https://socket.io/docs/v4/client-initialization/#auth

import { io } from "socket.io-client";
const socket = io({
auth: {
user: "abcd"
}
});

解决方案看起来像:

io.on("connection", async (socket: Socket) => {
console.log("front end says hi", socket.handshake.auth); // prints { user: "abcd" }
});

我可以将数据与";"连接";消息来标识正在连接的用户?

感谢

是的,可以在初始连接事件中识别用户。

要启动:客户端必须使用选项参数初始化套接字连接。这些选项应该包括一个指定用户的auth属性。

例如在客户端:

import { io } from "socket.io-client";
const socket = io({
auth: {
user: "abcd"
}
});

在服务器端,我们可以读取连接事件处理程序中的auth数据:

io.on("connection", async (socket: Socket) => {
console.log("front end says hi", socket.handshake.auth); 
// prints "front end says hi", { user: "abcd" }
});

您也可能会发现官方文档的链接很有帮助:https://socket.io/docs/v4/client-initialization/#auth

相关内容

最新更新