如何在建立websocket连接后获取之前保存在session的登录信息?
发布于 9 年前 作者 CCCMMM 7794 次浏览 最后一次编辑是 8 年前 来自 问答

看了很多网上的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。

回到顶部