如何为Websocket分配唯一标识符

时间:2018-11-14 23:08:49

标签: node.js express socket.io

在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使用此唯一标识符(登录)广播消息的方法

1 个答案:

答案 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);