国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
基于express socket.io的nodejs聊天室

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

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

特點(diǎn)

聊天室主要功能及其特點(diǎn):

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

廢話不多說了,注意點(diǎn),基本前面的文章都提到了,下面羅列下:
配置nodejs.exe的windows目錄結(jié)構(gòu)
安裝express及配置app.js文件
使用socket.io和node.js搭建websocket應(yīng)用
在Express和Socket.IO中使用session

nodejs聊天室下載地址

基于express+socket.io的聊天室

聊天室服務(wù)器端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);//設(shè)置sessionio.set('authorization', function(handshakeData, callback){	// 通過客戶端的cookie字符串來獲取其session數(shù)據(jù)	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!==''){		//需要判斷下是否已經(jīng)登錄		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 !== '') {		//需要判斷下是否已經(jīng)登錄		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;//設(shè)置session		res.render('chat',{name:name});	}else{		res.end('nickname cannot null');	} }); //===================socket鏈接監(jiān)聽=================/** * 開始socket鏈接監(jiān)聽 * @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);});
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
認(rèn)識(shí)HTML5的WebSocket
圖形驗(yàn)證插件,百度編輯器拓展功能,NodeJs消息機(jī)制以及聊天室,Python做爬蟲
移動(dòng)前端系列——websocket實(shí)時(shí)互動(dòng)小游戲
NodeJS - Express4.0錯(cuò)誤:Cannot read property 'Store' of undefined
NodeJS學(xué)習(xí)筆記(一)
nodejs搭建web服務(wù)器就是這么簡單!
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服