Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/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 在nodeJS中获取SESSIONID_Node.js_Express_Socket.io_Sessionid - Fatal编程技术网

Node.js 在nodeJS中获取SESSIONID

Node.js 在nodeJS中获取SESSIONID,node.js,express,socket.io,sessionid,Node.js,Express,Socket.io,Sessionid,现在,在玩了几个小时的nodejs和socket.io之后,我又遇到了几个问题——一个是,我需要在node.js中获取sessionID,使用app.get(“/”…)——因为当socket.io连接时,该事件似乎不会触发,所以它只在('connection',function(… var express = require('express')() express.set('port', process.env.PORT || 8080) var server = require('http

现在,在玩了几个小时的nodejs和socket.io之后,我又遇到了几个问题——一个是,我需要在node.js中获取sessionID,使用
app.get(“/”…
)——因为当
socket.io
连接时,该事件似乎不会触发,所以它只在('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。获取会话ID的最简单方法是什么?如前所述,我找到了几个使用
app.get('/')…
的示例,但我根本无法触发该事件


谢谢。

如果会话数据存储为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
收集此信息。您可能需要自己进行实验。

Hm,我得到了标题信息(cookie为空)-但我似乎没有得到
设置Cookie
数据,它显然不存在。如果我用firebug检查我的答案标题,它会告诉我类似
设置Cookie PHPSESSID=…;path=/
等的信息-但握手数据中似乎缺少这些信息。它不应该有相同的标题吗?也许我只是得到了整个答案会话概念错误啊!我找到了解决方案。你的想法似乎奏效了,我的问题显然是基于PHP的(通过更改SESSION.cookie\u域,它现在似乎提供了PHPSESSID),非常感谢!