关于express4.0 socketio+session的整合问题
困扰了一个星期了,没找到解决方案,还请大家多给些指点; 问题就是如何在socketio中,如何使用session获得获取连接的用户; 下面是代码: app.js
var session_store=new session.MemoryStore({
reapInterval: 60000*10
});
app.use(session({
secret:'secret',
cookie:{
maxAge:1000*60*30
},
store:session_store
}));
www中:
/**
* Module dependencies.
*/
var session =require('express-session');
var app = require('../app');
var debug = require('debug')('test:server');
var server=require('http').Server(app);
var io=require('socket.io').listen(server);
var store=session.MemoryStore;
//socketio module
io.on('connection',function(socket){
console.log('a user connected');
var cookie_string=socket.request.headers.cookie;
var mat=cookie_string.match(/sid=.+/);
var sid=cookie_string.substring(mat['index']+4);
if(sid.indexOf(';'))
sid=sid.substring(0,sid.indexOf(';'));
store.get(sid, function (err, session) {
if(err)
console.log("error:",err);
else
console.log("user:",session.user);
});
我目前的方案是将session存储在.MemoryStore,让后想在www中得到这个store,再通过get方法得到这个session,但碰到了2个问题: 1.这个store我试了很多方法,都没法在www中调用 2.好像4.0的写法store没有get这个属性 网上的例子大多是以express3.0为版本的,感觉3.0和4.0最大的不同在与有一个启动的js—www,这给我最直接的影响就是只能把socketio模块写在了www里面而不是app.js中 ,还有就是connect中间件,好像很多也不适用了
8 回复