2

现在,在玩了几个小时的 nodejs 和 socket.io 之后,我又遇到了几个问题 - 一个是,我需要在 node.js 中获取 sessionID,而无需使用app.get('/' ...- 因为该事件似乎不会触发socket.io连接,它只会触发.on('connection', function( ...

var express = require('express')()
express.set('port', process.env.PORT || 8080)

var server = require('http').createServer(express)
var socket = require('socket.io').listen(server)

server.listen(express.get('port'))

// this event is fired, get('/', ... isnt!
server.on('connection', function(stream) {
    // ??
} )

会话最初是由 PHP 应用程序在用户登录时创建的。会话数据存储在数据库中,我需要访问该数据的关键是会话 ID。最简单的方法是什么?如前所述,我发现了几个使用过的示例,app.get('/' ...但我根本无法触发该事件。

谢谢。

4

1 回答 1

1

如果会话数据被存储为 cookie(很可能),那么您应该能够在套接字握手期间重新解析该数据。我在这个答案上发布了代码,但也在这里复制了代码:

io.configure(function () {
  io.set('authorization', function (handshakeData, callback) {

    var cookie = handshakeData.headers.cookie;

    // parse the cookie to get user data...

    // second argument to the callback decides whether to authorize the client
    callback(null, true);
  });
});

如果会话数据在 URL 中传播,那么您可以从handshakeData.url或收集此信息handshakeData.query。您可能必须进行自己的实验。

于 2013-04-17T17:49:31.097 回答