多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

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

在Express和Socket.IO中使用session

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

在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的聊天室

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产成人乱码一区二区三区 | 999精品久久久中文字幕蜜桃 | 亚洲网站视频在线观看 | 国产成人精品自拍 | 黄色www| 毛片机地 | 日韩欧美视频 | 国产视频一区在线观看 | 男人久久天堂 | 国语精品视频在线观看不卡 | 国产精品视频一区二区三区 | 高清无遮挡在线观看 | 91精品欧美综合在线观看 | 久久久精品久久久久久 | 亚洲久久久| 羞羞网站免费 | 久久新网址 | 亚洲 图片 小说 欧美 另类 | 色噜噜狠狠先锋影音久久 | 亚洲免费在线观看视频 | 国产三级精品在线观看 | 中文字幕免费在线 | 亚洲激情小视频 | 婷婷麻豆| 日韩欧美色| 欧美性受xxxx | 福利在线免费 | 麻豆影视大全 | 岛国一区 | 国产性老妇女做爰在线 | 成人福利片 | 欧美激情videossex护士 | 成人国产免费 | 最新国产在线观看福利91 | 中文字幕精品一区二区精品 | 岛国性视频播放免费视频 | 一级一级 a爱片免费视频 | 欧美激情免费a视频 | 一级做a爱片性色毛片武则天五则 | 波霸欧美性猛交xxxxxx | 网友自拍网站 |