基于socket.io+express实现多房间聊天
socket.io简介Socket.IO是一个开源的WebSocket库,它通过Node.js实现WebSocket服务端,同时也提供客户端JS库。Socket.IO支持以事件为基础的实时双向通讯,它可以工作在任何平台、浏览器或移动设备。 Socket.IO支持4种协议:WebSocket、htmlfile、xhr-polling、jsonp-polling,它会自动根据浏览器选择适合的通讯方式,从而让开发者可以聚焦到功能的实现而不是平台的兼容性,同时Socket.IO具有不错的稳定性和性能。 多房间聊天socket.io提供rooms和namespace的API 用rooms的API就可以实现多房间聊天了,总结出来无外乎就是:join/leave room 和 say to room // say to room
io.to('some room').emit('some event'): io.in('some room').emit('some event'): 代码 github 新建文件夹chatapp-demo chatapp-demo/package.json 执行 npm install 服务端代码增加文件 chatapp-demo/app.js var app = express();
var server = require('http').Server(app); app.use(express.static(path.join(dirname,'public'))); app.set('views',path.join(dirname,'views')); app.set('view engine','hbs'); // 创建socket服务 socketIO.on('connection',function (socket) { socket.on('join',function (userName) { // 将用户昵称加入房间名单中 socket.join(roomID); // 加入房间 socket.on('leave',function () { socket.on('disconnect',function () { socket.leave(roomID); // 退出房间 // 接收用户消息,发送相应的房间 }); // room page // 渲染页面数据(见views/room.hbs) app.use('/',router); server.listen(3000,function () { 客户端代码 新增chatapp/views/room.hbs
{{roomID}}
昵称:
房间: {{roomID}} 当前在线人数: 在线用户: <div id="msglog"> 新增 chatapp/public/index.html
demo
欢迎您,骚年
房间列表 运行效果 代码已放在github (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |