1

我需要将我的 django web 应用程序中的登录用户与他们在 node.js 应用程序中的 socket.io 套接字关联起来,因为对于 web 的实时部分,我想使用 node.js。会话数据将存储在数据库中。我想我可以在浏览器中访问 c​​ookie,所以我可以发送到 node.js 应用程序 cookie 值,它就像用户标识符一样,但我认为这不是个好主意。有没有其他方法可以做到这一点?

4

1 回答 1

0

可以在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!');
});
于 2013-06-17T04:45:16.550 回答