express 4.13.3 +socket 1.3.6 中使用session

来源:赵克立博客 分类: Nodejs 标签:js函数nodejssocket发布时间:2015-10-29 17:04:27最后更新:2015-10-29 17:13:41浏览:3576
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2015-10-29 17:13:41
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

目录网上好多express的教程都是3.x的为此搜了好多无用的资料下面介绍下在express中使用session的方法

//下面是用到的依赖模块
var express = require('express')
  , path = require('path')
  , parseurl = require('parseurl')
  , session = require('express-session')
  , app = express()
  , server = require('http').createServer(app)
  , io = require('socket.io').listen(server);
  var port = process.env.PORT || 3000;
  var sessionid=null;//这里定义一个全局的sessionid变量
  
  启动服务器
 server.listen(port, function () {
  console.log('Server listening at port %d', port);
});


/************添加session支持**************************/
 app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true,
  cookie: { maxAge: 1000*3600 }
}));
app.use(function(req, res, next) {
   var views = req.session.views
  if (!views) {
    views = req.session.views = {}
  }
  // get the url pathname 
  var pathname = parseurl(req).pathname
  // count the views 
  views[pathname] = (views[pathname] || 0) + 1
  next()
});


 /************输出页面**************************/
app.use(express.static(path.join(__dirname, 'public')));
// 指定webscoket的客户端的html文件
app.get('/', function(req, res,next){

//每次刷新请求会自己生成一个新的session,如果不加下面代码并不会生成一个新的session直到自己过期(根据自己的需求)
req.session.regenerate(function(err) {
  sessionid=req.sessionID;//保存session到全局
});
  
  console.log(sessionid);
  res.sendFile( __dirname + '/views/chat.html');
});



//WebSocket连接监听
io.on('connection', function (socket) {
    //这里就可以使用全局中的session啦
});

以上代码使用的是

//express 4.13.3 
//socket 1.3.6 
//parseurl 1.3.0
//express-session 1.11.3



微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python