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

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > jscript > 基于express+socket.io的nodejs聊天室

基于express+socket.io的nodejs聊天室

來源:程序員人生   發布時間:2013-11-18 23:09:35 閱讀次數:3241次

前幾天晚上邊看水滸邊寫的nodejs的聊天室,前面說了,放假之前要把近日學習nodejs的所有心得整理下,今天就是30號鳥~撒歡~,最后放這個聊天室出來給大家作為學習nodejs的參考示例,希望對大家有用。

感謝:cnodejs群里的老雷,及其微博上的基友們!順祝大家長假快樂,順祝自己明天動車不出軌,順祝明年不再過節,感慨多了……

特點

聊天室主要功能及其特點:

  1. 采用nodejs(屁話)
  2. express框架,jade做模板
  3. socket.io做前后端的websocket通信
  4. 支持session
  5. 支持@私信功能

廢話不多說了,注意點,基本前面的文章都提到了,下面羅列下:
《配置nodejs.exe的windows目錄結構》
《安裝express及配置app.js文件》
《使用socket.io和node.js搭建websocket應用》
《在Express和Socket.IO中使用session》

nodejs聊天室下載地址

基于express+socket.io的聊天室

聊天室服務器端js代碼

//========================變量定義===============================/** * modules引入 */var express = require('express'),	sio = require('socket.io'),	fs=require('fs'),	path = require('path')	url = require('url'),	parseCookie = require('connect').utils.parseCookie,	MemoryStore = require('connect/middleware/session/memory'); /** * 私人聊天使用session */var usersWS = {}, //私人聊天用的websocket	storeMemory = new MemoryStore({		reapInterval: 60000 * 10	});//session store//=========================app配置=============================	/** * app配置 */var app = module.export = express.createServer(); app.configure(function(){	app.use(express.bodyParser());	app.use(express.cookieParser());	app.use(express.session({		secret: 'wyq',		store:storeMemory 	}));	app.use(express.methodOverride());	app.use(app.router);//要放在bodyParser之后,處理post	app.set('views', __dirname + '/views');	app.set('view engine', 'jade');	app.use(express.static(__dirname + '/public'));});//=================配置socket.io=========================/** * 配置socket.io *  */	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');	}});//=========================URL=============================/** * url處理開始鳥~ * @param {Object} req * @param {Object} res */app.get('/',function(req,res){ 	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);	}});app.get('/chat',function(req,res){	if (req.session.name && req.session.name !== '') {		//需要判斷下是否已經登錄		res.render('chat',{name:req.session.name});	}else{		res.redirect('/');	}})app.post('/chat',function(req,res){	var name = req.body.nick;	if(name && name!==''){		req.session.name = name;//設置session		res.render('chat',{name:name});	}else{		res.end('nickname cannot null');	} }); //===================socket鏈接監聽=================/** * 開始socket鏈接監聽 * @param {Object} socket */io.sockets.on('connection', function (socket){	var session = socket.handshake.session;//session	var name = session.name;	usersWS[name] = socket;	var refresh_online = function(){		var n = [];		for (var i in usersWS){			n.push(i);		}		io.sockets.emit('online list', n);//所有人廣播	}	refresh_online(); 	socket.broadcast.emit('system message', '【'+name + '】回來了,大家趕緊去找TA聊聊~~'); 	//公共信息	socket.on('public message',function(msg, fn){		socket.broadcast.emit('public message', name, msg);		fn(true);	});	//私人@信息	socket.on('private message',function(to, msg, fn){		var target = usersWS[to];		if (target) {			fn(true);			target.emit('private message', name+'[私信]', msg);		}		else {			fn(false)			socket.emit('message error', to, msg);		}	}); 	//掉線,斷開鏈接處理	socket.on('disconnect', function(){		delete usersWS[name];		session = null;		socket.broadcast.emit('system message', '【'+name + '】無聲無息地離開了。。。');		refresh_online();	}); }); //===========app listen 開始鳥~==========app.listen(3000, function(){	var addr = app.address();	console.log('app listening on http://127.0.0.1:' + addr.port);});
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 蜜臀91丨九色丨蝌蚪中文 | 国产精品精品 | 亚洲精品福利 | 亚洲精彩免费视频 | 国产精品精品视频一区二区三区 | 91嫩草影院在线观看 | 福利片网址 | 国产suv精品一区二区四 | 久久久久久影院 | 污污的网站在线免费观看 | 女同久久另类99精品国产 | 亚洲一区二区三区中文字幕 | 久草av在线播放 | 日韩av免费 | 国产一区二区免费视频 | 欧美日韩国产一区二区在线观看 | 国产日韩欧美不卡 | 精品视频在线看 | 毛片免费网址 | 久久美女性网 | 国产精品精品久久久 | 欧美精品在线观看 | 国产精品99久久 | 成人一区在线视频 | 亚洲福利在线观看 | 91久久精品人人做人人爽综合 | 韩日av | 精品国产乱码久久久久久丨区2区 | 国产精品日日做人人爱 | 精品国产一区二区三区四区在线观看 | 97国产在线视频 | 欧美日韩一卡 | 国产伊人网 | 色综综| 中文字幕视频一区 | 欧美伦理一区二区 | 欧美激情一二三区 | 亚洲1区在线 | 天堂中文资源在线 | 99久久综合 | 自拍偷拍第一页 |