express 4.13.3 +socket 1.3.6 中使用session
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。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