【发布时间】:2011-10-24 20:46:14
【问题描述】:
我正在尝试从使用 Express.js 框架的 Node.js 服务器触发的“升级”事件中访问会话对象。我已经正确设置了 Session 支持,并且可以从标准的 .get .post .put 和 .delete 方法访问它。
app.get('/', function(req, res) {
req.session.test = 'Hello world'; // Works fine
res.render('index');
});
但如果我像这样在服务器上连接一个“升级”事件:
app.on('upgrade', function(req, socket) {
var message = req.session.test; // Doesn't work
});
我无法访问会话对象。据我所知,Connect Session 中间件只为 get/post/put/delete 方法连接会话,而不为诸如“升级”之类的自定义事件连接。
仅供参考,在 WebSocket 握手期间从客户端发出“升级”事件,我正在尝试从初始 WebSocket 握手访问会话。握手期间会话 cookie 肯定存在于 HTTP 标头中,例如:
app.on('upgrade', function(req, socket) {
var cookieHeader = req.headers['cookie'];
console.log(cookieHeader);
});
...将输出连接会话cookie。有没有办法使用原始会话 cookie 令牌手动构建会话对象?
更新: 在 node.js IRC 聊天室与一些人交谈,显然这要么非常困难,要么不可能。 Connect 中间件不会暴露于自定义/异常事件,例如“升级”。他们说要在 Github 上提出一个问题,所以这里是:
【问题讨论】:
标签: session node.js websocket connect express