日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > jscript > 在Express和Socket.IO中使用session

在Express和Socket.IO中使用session

來源:程序員人生   發布時間:2013-10-16 05:50:01 閱讀次數:2871次

在nodejs項目中對于一些認證需要用到session,例如我寫的nodejs 聊天室的demo,就是通過session實現的認證。當存在session,直接進入聊天室,而不會重新登錄。

在網上也找到不少關于Express框架中的session調用方法,可是發現真正能用的不是很多,今天根據聊天室的制作過程,整理下Express和socket.IO中使用session的具體方法。

Express的session是通過cookie實現的,用到了connect中的兩個module:parseCookie和MemoryStore,前者是用來解析cookie,后者用來存儲sesion。

引入所需module

Express框架中使用session必須先引入上面的兩個模塊,例如下面的代碼:

var parseCookie = require('connect').utils.parseCookie,	MemoryStore = require('connect/middleware/session/memory');//建立一個memory store的實例var storeMemory = new MemoryStore({		reapInterval: 60000 * 10	});

Express中app的配置

在app需要添加如下的配置:

app.configure(function(){	app.use(express.bodyParser());//解析post	app.use(express.cookieParser());//解析cookie	//設置session	app.use(express.session({		secret: 'wyq',		store:storeMemory 	}));});

在請求中使用session

在請求中我們可以使用request.session來調用session,例如下面的代碼:

app.get('/',function(req,res){	//使用request.session來判斷是否登錄		if( req.session.name && req.session.name!==''){		//需要判斷下是否已經登錄		res.redirect('/chat');	}else{		//讀取登錄頁面,要求登錄		var realpath = __dirname + '/views/' + url.parse('login.html').pathname;		var txt = fs.readFileSync(realpath);		res.end(txt);	}});

websocket通信中使用session

在nodejs項目中,我們常常使用websockt來實現通信,所以websocket中也需要通過session來認證用戶。本例使用socket.io來舉例實現nodejs中websocket通信session的認證。關于socket.io的使用參考文章《使用socket.io和node.js搭建websocket應用》

上面代碼中引入了解析cookie的parseCookie,所以session是通過cookie來解析的。首先我們建立了socket的監聽之后需要對監聽到的頭文件處理,解析出來cookie中的session。例如下面的代碼:

var io = sio.listen(app);//設置sessionio.set('authorization', function(handshakeData, callback){	// 通過客戶端的cookie字符串來獲取其session數據	handshakeData.cookie = parseCookie(handshakeData.headers.cookie)	var connect_sid = handshakeData.cookie['connect.sid'];	if (connect_sid) {		storeMemory.get(connect_sid, function(error, session){			if (error) {				// if we cannot grab a session, turn down the connection				callback(error.message, false);			}			else {				// save the session data and accept the connection				handshakeData.session = session;				callback(null, true);			}		});	}	else {		callback('nosession');	}});


這樣我們就可以在socket監聽中使用session了,例如下面的代碼:

io.sockets.on('connection', function (socket){	var session = socket.handshake.session;//session	var name = session.name;	console.log(name);	socket.broadcast.emit('system message', '【'+name + '】回來了,大家趕緊去找TA聊聊~~');	});

關于connect中middleware的session詳細介紹及其方法可以參考下面的官方介紹

nodejs聊天室

最后附上前幾日寫的nodejs的一個聊天室,結合最近寫的文章,看起來應該很容易,里面的代碼相對簡單,注釋還算清晰,對于nodejs的初學者應該有一定的幫助:

下載基于express+socket.io的聊天室

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产伦精品一区二区三区在线 | 亚洲国产精品一区二区第一页 | 91网站在线看 | 玖玖久久| 欧美国产精品一区二区三区 | 日韩爆操 | 国产精品日韩欧美一区二区三区 | 欧美视频亚洲视频 | 国产二区三区 | 亚洲国产精品女人久久久 | 91看片免费在线观看 | 欧美日精品 | 精品一区二区视频 | 久久久www成人免费精品 | 成人免费视频网站在线看 | 久久久久久久一区二区 | 日本久久一区二区 | 在线一区| 成人夜晚看av | 91精品久久久久 | 亚洲国产免费 | 一级黄色免费网站 | 国产精品一区二区在线 | 国产精品1区 | 91成人国产 | 日韩av电影免费观看 | 在线免费看污 | 欧美一区二区在线免费观看 | 国产精品美女一区二区三区 | 精品日韩一区二区三区免费视频 | 国产精品一区二区久久 | 一区二区三区精品在线 | 亚洲精品影视 | 99久久夜色精品国产亚洲96 | 欧美成人黄色 | 久久精品日韩 | 久久久网站免费 | 在线免费观看亚洲 | 久久久鲁 | 国产精品久久国产三级国电话系列 | 色婷婷综合久久久中文字幕 |