代码太多了不会全部放上,主要说下里面关键的细节
1.先把必要的npm包给装好
要在socket中完成对session的认证先加上
parseCookie = require('connect').utils.parseCookie
MemoryStore = require('connect/middleware/session/memory');
把上面的所有npm包给装好,还要装socket.io 这是基本的
2.建立一个memory store的实例
var storeMemory = new express.session.MemoryStore({
reapInterval: 60000 * 10
});
3.为了在express中使用session我们要加上
app.use(express.cookieParser());
app.use(express.session({secret:'wyq',store:storeMemory}));
4.设置session(session的认证)
io.set('authorization', function(handshakeData, callback){
if(handshakeData.headers.cookie){
handshakeData.cookie = parseCookie(handshakeData.headers.cookie);
var connect_sid = handshakeData.cookie['connect.sid'].split('.')[0].split(':')[1];
}else{
callback('cookie is not defined',false);
}
if (connect_sid) {
storeMemory.get(connect_sid, function(error, session){
if (error) {
callback(error.message, false);
}else{
try{
if(typeof session.username != 'undefined'){ //这里一定要先判断session.username,否则socket中的session一直为空
handshakeData.session = session;
callback(null,true);
}else{
callback('access die',false);
}
}catch(e){