繁体   English   中英

如何将node.js应用程序中的socket.io套接字与Web应用程序中的登录用户相关联?

[英]How to associate socket.io sockets in node.js app with logged user in web app?

我需要将Django Web应用程序中的已登录用户与其在node.js应用程序中的socket.io套接字相关联,因为对于Web的实时部分,我想使用node.js。 会话数据将存储在数据库中。 我认为我可以在浏览器中访问cookie,因此可以将它发送给node.js应用的cookie值,就像用户标识符一样,但是我认为这不是一个好主意。 还有其他方法吗?

可以在authorization事件内部访问cookie。 因此,如果您已经在使用cookie来存储会话身份验证数据,则将其集成到socket.io中非常容易。 有一些预制模块可以执行这种操作,例如SessionSockets

本文对如何自己做提供了一些见解。 最重要的部分如下:

var parseCookie = require('connect').utils.parseCookie;

sio.set('authorization', function (data, accept) {
    // check if there's a cookie header
    if (data.headers.cookie) {
        // if there is, parse the cookie
        data.cookie = parseCookie(data.headers.cookie);
        // note that you will need to use the same key to grad the
        // session id, as you specified in the Express setup.
        data.sessionID = data.cookie['express.sid'];
    } else {
       // if there isn't, turn down the connection with a message
       // and leave the function.
       return accept('No cookie transmitted.', false);
    }
    // accept the incoming connection
    accept(null, true);
});

sio.sockets.on('connection', function (socket) {
    console.log('A socket with sessionID ' + socket.handshake.sessionID 
        + ' connected!');
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM