现在,在使用了几个小时的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.url
或handshakeData.query
收集此信息。您可能需要做自己的实验。关于node.js - 在nodeJS中获取SESSIONID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16060268/