gpt4 book ai didi

javascript - 将 Websocket 与 Passport 一起使用

转载 作者:IT老高 更新时间:2023-10-28 23:25:25 25 4
gpt4 key购买 nike

当有人打开 WebSocket 连接时,我如何访问当前 session 的 Passport 登录?

我找到了一个不错的项目express-ws这似乎工作得很漂亮

app.ws('/', function(ws, req) {
ws.on('message', function(msg) {
console.log('express-ws --- ', msg);
});
console.log('socket', req.user); //current user == req.user
});

但是我将如何通过普通的 Websocket 连接获取相同的信息?

var WebSocketServer = require('ws').Server,
wss = new WebSocketServer({ port: 3001 });

wss.on('connection', function(socket){
//Where is the current user????
console.log('connection');

socket.on('message', function(message){
console.log('message received', message);
});
});

(第二个连接工作得很好——但我一辈子都找不到从 Passport 获取登录信息的方法)

最佳答案

在创建 WS 服务器时,添加如下“verifyClient”参数以获取 session 信息:

  const wss = new (require('ws').Server)({
server,
verifyClient: (info, done) => {
sessionParser(info.req, {}, () => {
done(info.req.session)
})
}
})

sessionParser 是您的 express-session 配置对象。然后,这允许您通过 req.session 在 websocket 中访问它。如果您使用的是 Passport ,您可能需要 req.session.passport.user..

关于javascript - 将 Websocket 与 Passport 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35654099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com