在Node / Express环境中使用socket.io,是否可以在建立套接字连接时唯一地分配某人的登录ID?
在我的app.js(快速)文件中,我有以下代码可以从请求标头中访问登录名:
const express = require('express');
const app = express();
app.use(function(req, res, next){
let login = req.header('login');
next();
});
我需要一种能够通过socket.io使用此唯一标识符(登录)广播消息的方法
答案 0 :(得分:1)
好的,我假设您有能力从登录cookie中找出它是哪个用户。由于您没有向我们展示如何设置Cookie,因此必须编写自己的代码。
当socket.io connection
事件发生时,您可以从socket.request.headers.cookie
中的初始socket.io连接请求获取cookie。假设您有一个名为getUserFromCookie()
的函数,您将一个登录cookie传递给了该函数,它返回了userID,并且假设您的登录cookie被命名为“ login”。然后,您可以编写如下代码:
io.on('connection', socket => {
let userId = getUserFromCookie(socket.request.headers.cookie);
// join user to a room with the name of their userId
socket.join(userId);
});
然后,在服务器代码中要向特定userId
发送消息的其他地方,只需执行以下操作即可:
io.to(userId).emit("someMsg", someData);