`

nodeJS之socket.io实践-在线聊天室

 
阅读更多

在线聊天室(带历史记录显示功能)

 

依赖环境: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');
});

 

分享到:
评论

相关推荐

    nodeJS+socket.io做一个简单的聊天室

    在本文中,我们将深入探讨如何使用Node.js和Socket.IO创建一个简单的聊天室。这是一个非常实用的项目,适合初学者入门,同时也是对这两种技术的绝佳实践。 Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它...

    16课 NodeJS基础-第6天-{socket.io聊天室、文件操作 }.rar

    在本课程中,我们将深入探讨 Node.js 的基础,特别是第6天的主题——如何利用 socket.io 实现聊天室功能以及进行文件操作。 一、socket.io 聊天室 Socket.IO 是一个实时应用框架,它允许在客户端和服务器之间进行...

    egg-socket-io的demo案例

    主要实现egg利用egg-socket.io 和前端建立长链接 。里面2个文件egg、和html,一个是egg的 你更新下依赖,可以直接启动,还一个是html可以直接测试后端的推送。 演示地址看这里...

    Node.js-基于nodejs-websocket模块Socket.io库实现多人在线聊天室

    在本文中,我们将深入探讨...总的来说,利用Node.js和Socket.io构建一个多人在线聊天室是一项有趣且实用的实践,它涉及到网络编程、实时通信、文件处理等多个技术领域,能帮助你深入理解这些技术并提升你的开发能力。

    基于NodeJS的聊天室程序(socket.io实现)

    【基于NodeJS的聊天室程序(socket.io实现)】 在当今互联网技术中,实时通信成为了一个不可或缺的特性,尤其是在社交应用和协作工具中。本项目基于Node.js和socket.io,构建了一个能够实现多人在线聊天的聊天室程序...

    nodejs-socket.io-mysql

    1. **聊天室**:用户通过 Socket.IO 发送和接收消息,服务器将新消息存入 MySQL 数据库,同时广播给所有在线用户。 2. **实时通知**:当数据库中的某些数据发生变化时,例如用户状态更新或订单状态变更,服务器可以...

    Node.js-网站在线客服基于socket.io和node

    - **连接管理**:当客户访问网站时,通过socket.io建立连接,将用户加入到聊天室中。可以为每个连接分配一个唯一的标识符,以便后续的消息传输。 - **消息广播**:客服人员发送的消息需要广播到所有已连接的客户端,...

    Nodejs socket.io实战小游戏

    WebSocket接口在HTML5中被引入,对于需要实时交互的应用,如在线游戏、聊天室等,非常有用。 ### 3. Socket.IO概述 socket.io是基于WebSocket的,但同时它还支持其他几种备选技术(如polling),以应对WebSocket在...

    simpy-chat:使用 nodejs 和 socket.io 简单加密聊天

    在`index.coffee`文件中,我们可以看到CoffeeScript如何被用来设置服务器、监听连接、处理事件以及管理聊天室。 在使用Socket.IO时,我们需要创建一个服务器实例,监听特定的端口,并设置事件监听器。例如,`socket...

    使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室

    在本文中,我们将深入探讨如何使用Angular和Node.js、socket.io技术栈来创建一个聊天室应用,特别是多人聊天室的功能。首先,我们需要了解基础架构的组成部分。 1. **利用Node.js搭建静态服务器**: Node.js是基于...

    基于nodejs+express+socket.io模块构建的强大网页聊天室+Vue前端+源码+项目文档(毕业设计&课程设计)

    基于nodejs+express+socket.io模块构建的强大网页聊天室+Vue前端+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 聊天室是一个基于...

    NodeJS+Express+socket_io 多人聊天简单Demo

    在多人聊天室中,socket.io负责实现实时通信,当用户发送消息时,服务器会通过socket.io将消息广播给所有在线用户,实现即时聊天功能。 【多人聊天室实现过程】 1. **服务器端**:首先,需要使用Node.js和Express...

    基于Nodejs利用socket.io实现多人聊天室

    在本文中,我们将深入探讨如何使用Node.js和socket.io库创建一个多人聊天室。WebSocket是一种在Web应用程序中实现低延迟、双向通信的技术,它允许服务器和客户端之间建立持久的连接,以便实时交换数据。然而,由于...

    前端html,JavaScript, nodejs,express,socket.io,websoket 聊天室,供学习使用

    在聊天室应用中,Socket.IO负责建立WebSocket连接,使得服务器能够实时推送新消息到所有在线用户。每当有新的消息发送,服务器会通过Socket.IO广播该消息,客户端则实时更新界面。 6. **WebSocket**:WebSocket是...

    Node.js-node.js利用socket.io实现多人在线匹配联机五子棋

    在"Node.js-node.js利用socket.io实现多人在线匹配联机五子棋"这个项目中,我们将会讨论如何利用Node.js和Socket.IO来创建一个实时的多人在线五子棋游戏。五子棋是一种简单但策略丰富的两人对弈游戏,通过网络实现...

    nodejs-socket 实时通讯简单案例

    在IT行业中,实时通讯技术是构建现代Web应用的关键部分,特别是在需要双向通信的场景下,如聊天室、在线游戏和协作工具等。本案例聚焦于使用Node.js和Socket.IO实现这样的功能,通过创建一个简单的实时通讯环境来...

    Node.js-NodeJSSocket.io实现的一个在线聊天室

    **Node.js与Socket.io简介** ...通过以上步骤,你可以构建一个基本的在线聊天室,了解实时通信的基本原理和Node.js+Socket.io的使用方法。这个过程有助于深入理解Node.js服务器端编程和实时Web应用的构建。

    NodeJS-Socket.io

    总之,NodeJS-Socket.io 是一个强大且灵活的工具,适用于需要实时交互的应用场景,如聊天室、在线游戏、股票交易系统等。它通过简单的API让开发者能够专注于业务逻辑,而不是底层通信细节。配合HTML和JavaScript,...

Global site tag (gtag.js) - Google Analytics