现在,在使用了几个小时的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) {
    // ??
} )


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

谢谢。

最佳答案

如果会话数据被存储为cookie(最有可能),那么您应该能够在套接字握手期间重新解析该数据。我在this answer上发布了该代码,但也在此处复制了代码:

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.urlhandshakeData.query收集此信息。您可能需要做自己的实验。

关于node.js - 在nodeJS中获取SESSIONID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16060268/

10-09 20:42