Node.js WebSocket聊天室实现示例
聊到聊天室,大家应该都不陌生。无论是早期的 IRC,还是如今的各类即时通讯工具,核心逻辑其实都差不多。之前也讨论过不少使用 Node.js 搭建聊天服务的案例,今天换一个角度,专门演示如何通过 WebSocket 实现一个高效实时的聊天服务器,帮助大家快速掌握 Node.js WebSocket 聊天室的开发流程。
之所以选择 WebSocket,是因为它天然支持全双工通信,非常适合实时聊天、在线协作等场景。Node.js 原生 API 虽然不直接提供 WebSocket 支持,但社区有非常成熟的第三方库,比如本文要使用的 ws(项目主页在 GitHub 上,搜索 websockets/ws 即可找到)。这个框架轻量、易用,不依赖其他环境,非常适合用来快速搭建 WebSocket 聊天服务器原型。
安装方式与其他 Node.js 包一样,一行命令即可完成:
npm install ws
安装完成后,创建 WebSocket 服务器非常简单。下面是一个基本示例,监听在 8080 端口:
const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 8080 });
服务器启动后,接下来要考虑聊天室的具体需求。这里实现一个经典的群聊模式:所有用户发送的消息,其他在线用户都能即时看到。当新用户连接时,服务器使用其 IP 和端口拼接作为临时昵称,方便区分不同的客户端。
服务器端的实现
理解了需求后,代码实现就顺理成章了。以下是完整的服务器端代码,展示了如何用 Node.js 和 ws 库构建一个 WebSocket 聊天服务器:
const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 8080 });
server.on('open', function open() {
console.log('connected');
});
server.on('close', function close() {
console.log('disconnected');
});
server.on('connection', function connection(ws, req) {
const ip = req.connection.remoteAddress;
const port = req.connection.remotePort;
const clientName = ip + ':' + port;
console.log('%s is connected', clientName);
// 发送欢迎信息给客户端
ws.send("Welcome " + clientName);
ws.on('message', function incoming(message) {
console.log('received: %s from %s', message, clientName);
// 广播消息给所有客户端
server.clients.forEach(function each(client) {
if (client.readyState === WebSocket.OPEN) {
client.send(clientName + " -> " + message);
}
});
});
});
核心逻辑非常直接:当服务器收到某个客户端发送的消息时,会遍历所有已连接的客户端,将消息加上发送者昵称后转发出去,从而实现群聊广播效果。
客户端的实现
客户端方面更简单——浏览器原生支持 WebSocket API,无需额外引入第三方库。使用 HTML + JavaScript 即可快速搭建交互页面。
下面是客户端 client.html 的完整代码:
WebSocket Chat
这里需要注意一点:WebSocket 的连接地址是 ws://localhost:8080/ws,路径部分需要与服务器端保持一致(服务器端未限制路径时默认接受所有请求,但客户端指定了路径,实际运行时直接连接 ws://localhost:8080 也是可行的。此处保留原意,不必深究)。
运行应用
先启动服务器:
node index.js
然后在浏览器中直接打开 client.html 文件,就能看到聊天界面了。

多开几个浏览器窗口,即可模拟多个用户同时在线聊天。每个人发送的消息,其他窗口都能即时收到,充分体现 WebSocket 的实时通信能力。

整个流程下来,核心逻辑其实只有几步:搭建 WebSocket 服务器、处理客户端连接、广播消息。WebSocket 让这一切变得非常流畅,而 Node.js 的非阻塞特性则保证了高并发下的性能表现。如果你有兴趣,完全可以在本示例的基础上扩展更多功能,例如用户昵称自定义、消息持久化存储、私聊等,打造一个功能完善的 Node.js 实时聊天应用。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
WPS AI生成专业PPT模板技巧与工作总结范文
每逢职场汇报高峰期,项目总结、年终述职等任务纷至沓来,你是否也常感到时间紧迫、内容匮乏且思路混乱?此时,一份设计得当的PPT模板,往往能成为你高效表达的得力助手。它不仅关乎专业形象的塑造,更是牢牢抓住听众注意力的核心要素。毕竟,在信息爆炸的时代,观众的耐心可能比金鱼还要短暂。 令人欣慰的是,如今我们
AI提升企业公文写作效率实用指南与范文
适合需求: 在当今企业与组织机构中,公文撰写几乎已成为每位职场人士必须掌握的“基础技能”。无论是会议记录、通知公告,还是各类总结报告,这类写作需求几乎无处不在。然而,真正动笔时,不少人却感到棘手:如何将思路清晰、准确地表达在纸上? 范文 Demo: 公文的重要性不言自明。它不仅是信息传达的桥梁,更直
Excel两表数据对比技巧,提升工作效率实用方法
```html Excel两个表格数据对比的高效方法 在日常工作中,经常需要对比两个Excel表格中的数据,快速找出差异或合并信息。无论是数据分析师还是普通办公人员,掌握这些Excel数据对比技巧都能显著提升工作效率。以下介绍三种实用的表格对比方法,各有侧重,可根据实际需求灵活选用。 方法一:使用条
如何撰写真诚辞职报告?范文与提示词
辞职报告适用场景与要求: 辞职报告范文模板 尊敬的领导: 此刻,我怀着复杂与感激的心情向您递交这份辞职申请。首先,衷心感谢您在我任职期间给予的悉心指导与关怀。正是在您的支持与信任下,我得以持续成长、不断进步,并收获了极为宝贵的工作经验。 此次离职决定并非一时冲动,而是经过深思熟虑。主要基于以下几点:
Excel汇总其他表格数据方法,提升工作效率
Excel跨表格汇总数据的4种高效方法(附公式详解) 在日常办公中,很多人经常遇到这样的场景:手头有多个Excel表格,数据分散在不同的文件或工作表中,需要合并进行整体分析,结果要么是手动复制粘贴效率低下,要么是公式写错导致混乱。实际上,Excel内置了多种成熟的数据汇总手段,能帮你快捷准确地将分散
- 日榜
- 周榜
- 月榜
1
2
3
4
5
6
7
8
9
10
相关攻略
2015-03-10 11:25
2015-03-10 11:05
2021-08-04 13:30
2015-03-10 11:22
2015-03-10 12:39
2022-05-16 18:57
2025-05-23 13:43
2025-05-23 14:01
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

