现在,在使用nodejs和socket.io几个小时后,我遇到了更多问题 - 一个是,我需要在node.js中获取sessionID,使用app.get('/' ...
进行whitout - 因为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应用程序创建。会话数据存储在数据库中,我需要访问该数据的密钥是SESSION ID。什么是最简单的方法?如上所述,我发现了几个使用app.get('/' ...
的示例,但我根本无法触发该事件。
感谢。
答案 0 :(得分:1)
如果会话数据存储为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);
});
});
如果会话数据在网址中传播,那么您可以从handshakeData.url
或handshakeData.query
收集此信息。你可能不得不做自己的实验。