在线聊天室(带历史记录显示功能)
依赖环境:node.js
依赖的模块:express, socket.io
示例代码见附件,解压后运行: npm install ,安装依赖模块,然后运行机制:node index.js
浏览器访问:localhost:3000/index.html
服务端代码:
var express = require('express'); var app = express(); var path = require('path'); var http = require('http').Server(app); var io = require('socket.io')(http); app.use(express.static(path.join(__dirname, 'public'))); app.get('/', function(req, res){ res.send('<h1>Welcome Realtime Server</h1>'); }); //在线用户 var onlineUsers = {}; //当前在线人数 var onlineCount = 0; // 消息记录 var messageList = []; io.on('connection', function(socket){ console.log('a user connected'); //监听新用户加入 socket.on('login', function(obj){ //将新加入用户的唯一标识当作socket的名称,后面退出的时候会用到 socket.name = obj.userid; //检查在线列表,如果不在里面就加入 if(!onlineUsers.hasOwnProperty(obj.userid)) { onlineUsers[obj.userid] = obj.username; //在线人数+1 onlineCount++; } //向所有客户端广播用户加入 io.emit('login', {onlineUsers:onlineUsers, onlineCount:onlineCount, user:obj}); console.log(obj.username+'加入了聊天室'); // 向刚加入的用户推送历史消息 console.log("userid:"+obj.userid); console.log("socketid:"+socket.id); io.sockets.connected[socket.id].emit('messageHistory', {messageList: messageList}); }); //监听用户退出 socket.on('disconnect', function(){ //将退出的用户从在线列表中删除 if(onlineUsers.hasOwnProperty(socket.name)) { //退出用户的信息 var obj = {userid:socket.name, username:onlineUsers[socket.name]}; //删除 delete onlineUsers[socket.name]; //在线人数-1 onlineCount--; //向所有客户端广播用户退出 io.emit('logout', {onlineUsers:onlineUsers, onlineCount:onlineCount, user:obj}); console.log(obj.username+'退出了聊天室'); } }); //监听用户发布聊天内容 socket.on('message', function(obj){ //向所有客户端广播发布的消息 io.emit('message', obj); messageList.push(obj); console.log(obj.username+'说:'+obj.content); }); }); http.listen(3000, function(){ console.log('listening on *:3000'); });
相关推荐
自己动手做一个简单的聊天室。用来起步是不错的。自己也是刚开始自学
16课 NodeJS基础-第6天-{socket.io聊天室、文件操作 }
用nodejs socket.io 开发简单网页聊天室(支持任何浏览器)
基于nodejs-websocket模块、Socket.io库实现多人在线聊天室[丰富了上传图片,发送表情等实用聊天功能]
本文主要给大家详细介绍Angular和Nodejs、socket.io的使用,以及如何使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室,需要的朋友可以来参考下
NodeJS Socket.io 实现的一个在线聊天室
前端html,JavaScript, nodejs,express,socket.io,websoket 聊天室,供学习使用
聊天室 nodejs express socket.io 聊天室
之前用java jsp写过一个聊天,其实实现逻辑并不难,只是大部分时间都用在UI的设计上,其实现原理就是一个基于websocket的通信,要想做一个好的聊天室,我觉得大部分精力可能更应该花在与用户的视觉层交互上。...
node.js 的socket.io的使用,适合nodejs初学者,超精简的node.js websocket网页聊天室DEMO,虽然是很基础,但你至少得会配置nodejs,会敲hello world吧。
讲述了websocket无到有,根据协议,分析数据帧的头,进行构建websocket。虽然代码短,但可以很好地体现websocket的原理。对nodejs利用socket 实现多人聊天室功能感兴趣的朋友一起看看吧
使用 socket.io 和 React.js 的最小实时聊天应用程序。 尝试同时打开两个窗口,然后聊天! 堆 前端:React.js 用于数据绑定,socket.io 用于 POST 内容 后端:用于 GET 东西的 PostgresQL、Node、socket.io 在这种...
简单的基于nodeJs+express+socket.io的即时通信web聊天室,实现了在线统计,消息广播 ,图片发送,表情发送等
nodejs 基于socket.io实现聊天室
基于koa+node.js+socket.io实现简易聊天室源码.zip
包含完整代码及描述文档。 可以实现多人在线聊天。
express+socket.io+angular聊天室,实现的登陆验证和socket验证,确保你的运行环境中有Mongodb和nodejs,可以直接运行
test 这个例子需要安装nodejs、socket.io linux 12.04下安装nodejs 检查依赖项 1. sudo apt-get install g++ curl libssl-dev apache2-utils 2. sudo apt-get install git-core 下载并安装 nodejs 1. git clone git:...