如何在建立websocket连接后获取之前保存在session的登录信息?
看了很多网上的websocket的例子,都是直接将用户uid通过socket的方式发送给服务端,我是设计的一个登录界面跳转到聊天的主界面,之前登录过后uid应该保存在了session里面了,但我不知道如何引用,下面是我服务端socket的部分:
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('test:server');
var server=require('http').Server(app);
var io=require('socket.io').listen(server);
//socketio module
io.on('connection',function(socket){
console.log('a user connected');
console.log(req.session.user);
});
*
然后这个是错误 ReferenceError: req is not defined req是http请求方面的我知道,就是如何引用到这里我就不是很懂了,还请大家帮帮忙!
3 回复
ws协议是拿不到session key的。你需要在前段从hearder中拿到session字段。通过ws的一个send方法交互session。并且要有类似
var session = require(xxx);
session.get(key,function(err,result){})
这种写法。 你先理解session只是一个临时db而已。你的这个需求最好能自己实现session池。 别问我要现成案例。没有。拒绝伸手从我做起。
@MiguelValentine你的意思是不是单靠服务器端还是没办法得到这个session的?
@CCCMMM 是拒绝express的集成session池。因为socketio的处理没进express。