有没有办法从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