在线聊天室(带历史记录显示功能)
依赖环境: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'); });
相关推荐
在本文中,我们将深入探讨如何使用Node.js和Socket.IO创建一个简单的聊天室。这是一个非常实用的项目,适合初学者入门,同时也是对这两种技术的绝佳实践。 Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它...
在本课程中,我们将深入探讨 Node.js 的基础,特别是第6天的主题——如何利用 socket.io 实现聊天室功能以及进行文件操作。 一、socket.io 聊天室 Socket.IO 是一个实时应用框架,它允许在客户端和服务器之间进行...
主要实现egg利用egg-socket.io 和前端建立长链接 。里面2个文件egg、和html,一个是egg的 你更新下依赖,可以直接启动,还一个是html可以直接测试后端的推送。 演示地址看这里...
在本文中,我们将深入探讨...总的来说,利用Node.js和Socket.io构建一个多人在线聊天室是一项有趣且实用的实践,它涉及到网络编程、实时通信、文件处理等多个技术领域,能帮助你深入理解这些技术并提升你的开发能力。
【基于NodeJS的聊天室程序(socket.io实现)】 在当今互联网技术中,实时通信成为了一个不可或缺的特性,尤其是在社交应用和协作工具中。本项目基于Node.js和socket.io,构建了一个能够实现多人在线聊天的聊天室程序...
1. **聊天室**:用户通过 Socket.IO 发送和接收消息,服务器将新消息存入 MySQL 数据库,同时广播给所有在线用户。 2. **实时通知**:当数据库中的某些数据发生变化时,例如用户状态更新或订单状态变更,服务器可以...
- **连接管理**:当客户访问网站时,通过socket.io建立连接,将用户加入到聊天室中。可以为每个连接分配一个唯一的标识符,以便后续的消息传输。 - **消息广播**:客服人员发送的消息需要广播到所有已连接的客户端,...
WebSocket接口在HTML5中被引入,对于需要实时交互的应用,如在线游戏、聊天室等,非常有用。 ### 3. Socket.IO概述 socket.io是基于WebSocket的,但同时它还支持其他几种备选技术(如polling),以应对WebSocket在...
在`index.coffee`文件中,我们可以看到CoffeeScript如何被用来设置服务器、监听连接、处理事件以及管理聊天室。 在使用Socket.IO时,我们需要创建一个服务器实例,监听特定的端口,并设置事件监听器。例如,`socket...
在本文中,我们将深入探讨如何使用Angular和Node.js、socket.io技术栈来创建一个聊天室应用,特别是多人聊天室的功能。首先,我们需要了解基础架构的组成部分。 1. **利用Node.js搭建静态服务器**: Node.js是基于...
基于nodejs+express+socket.io模块构建的强大网页聊天室+Vue前端+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 聊天室是一个基于...
在多人聊天室中,socket.io负责实现实时通信,当用户发送消息时,服务器会通过socket.io将消息广播给所有在线用户,实现即时聊天功能。 【多人聊天室实现过程】 1. **服务器端**:首先,需要使用Node.js和Express...
在本文中,我们将深入探讨如何使用Node.js和socket.io库创建一个多人聊天室。WebSocket是一种在Web应用程序中实现低延迟、双向通信的技术,它允许服务器和客户端之间建立持久的连接,以便实时交换数据。然而,由于...
在聊天室应用中,Socket.IO负责建立WebSocket连接,使得服务器能够实时推送新消息到所有在线用户。每当有新的消息发送,服务器会通过Socket.IO广播该消息,客户端则实时更新界面。 6. **WebSocket**:WebSocket是...
在"Node.js-node.js利用socket.io实现多人在线匹配联机五子棋"这个项目中,我们将会讨论如何利用Node.js和Socket.IO来创建一个实时的多人在线五子棋游戏。五子棋是一种简单但策略丰富的两人对弈游戏,通过网络实现...
在IT行业中,实时通讯技术是构建现代Web应用的关键部分,特别是在需要双向通信的场景下,如聊天室、在线游戏和协作工具等。本案例聚焦于使用Node.js和Socket.IO实现这样的功能,通过创建一个简单的实时通讯环境来...
**Node.js与Socket.io简介** ...通过以上步骤,你可以构建一个基本的在线聊天室,了解实时通信的基本原理和Node.js+Socket.io的使用方法。这个过程有助于深入理解Node.js服务器端编程和实时Web应用的构建。
总之,NodeJS-Socket.io 是一个强大且灵活的工具,适用于需要实时交互的应用场景,如聊天室、在线游戏、股票交易系统等。它通过简单的API让开发者能够专注于业务逻辑,而不是底层通信细节。配合HTML和JavaScript,...