Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Socket.io和Passport-在套接字连接上获取Passport用户ID?_Node.js_Sockets - Fatal编程技术网

Node.js Socket.io和Passport-在套接字连接上获取Passport用户ID?

Node.js Socket.io和Passport-在套接字连接上获取Passport用户ID?,node.js,sockets,Node.js,Sockets,本质上,我想获取连接到socket.io的用户的用户ID 如果用户没有登录,我将忽略套接字连接请求——否则我将在redis中存储Passport用户ID和套接字连接ID 那么,我的问题是:如何从套接字对象获取Passport用户?关于如何使用socket.IO实现身份验证的很好的解释,您读过了吗 考虑到解决此问题的现有库不能与当前版本的Socket.io一起使用,我决定采用以下方法: 我正在使用MongoStore作为会话存储: var sid = cookie.parse(socket.han

本质上,我想获取连接到socket.io的用户的用户ID

如果用户没有登录,我将忽略套接字连接请求——否则我将在redis中存储Passport用户ID和套接字连接ID


那么,我的问题是:如何从套接字对象获取Passport用户?

关于如何使用socket.IO实现身份验证的很好的解释,您读过了吗

考虑到解决此问题的现有库不能与当前版本的Socket.io一起使用,我决定采用以下方法:

我正在使用MongoStore作为会话存储:

var sid = cookie.parse(socket.handshake.headers.cookie)['connect.sid'];
    sessionStore.get(sid.split('.')[0].split(':')[1], function (err, session) {
        if (session.passport.user) {
            console.log('io found user logged in');
        } else {
            console.log('io found no user');
        }
    })

如果我发现用户已登录,我将在Redis中存储他们的userID和socket.io连接信息。当我需要向用户推送通知时,我将查询redis以获取他们的用户ID,并根据我找到的套接字ID发出通知。当用户断开连接时,我将删除其用户ID的条目。

断开的链接,此页面不再存在