当前位置: 首页
AI教程
Node.js WebSocket聊天室实现示例

Node.js WebSocket聊天室实现示例

热心网友 时间:2026-05-30
转载

聊到聊天室,大家应该都不陌生。无论是早期的 IRC,还是如今的各类即时通讯工具,核心逻辑其实都差不多。之前也讨论过不少使用 Node js 搭建聊天服务的案例,今天换一个角度,专门演示如何通过 WebSocket 实现一个高效实时的聊天服务器,帮助大家快速掌握 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 聊天室:


这里需要注意一点:WebSocket 的连接地址是 ws://localhost:8080/ws,路径部分需要与服务器端保持一致(服务器端未限制路径时默认接受所有请求,但客户端指定了路径,实际运行时直接连接 ws://localhost:8080 也是可行的。此处保留原意,不必深究)。

运行应用

先启动服务器:

node index.js

然后在浏览器中直接打开 client.html 文件,就能看到聊天界面了。

聊天界面

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

群聊界面

整个流程下来,核心逻辑其实只有几步:搭建 WebSocket 服务器、处理客户端连接、广播消息。WebSocket 让这一切变得非常流畅,而 Node.js 的非阻塞特性则保证了高并发下的性能表现。如果你有兴趣,完全可以在本示例的基础上扩展更多功能,例如用户昵称自定义、消息持久化存储、私聊等,打造一个功能完善的 Node.js 实时聊天应用。

来源:https://developer.aliyun.com/article/704472

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
DeepL Write Linux服务器部署教程从环境到后台运行

DeepL Write Linux服务器部署教程从环境到后台运行

DeepLWrite暂无官方本地服务端,Linux部署更适合搭建团队入口或轻量封装服务。流程涵盖环境准备、Node服务安装、Nginx转发、PM2后台运行、日志监控、升级回滚与安全边界。

时间:2026-07-17 06:52
DeepL Write在Mac电脑上的详细完整安装教程:Apple Silicon与Intel配置步骤

DeepL Write在Mac电脑上的详细完整安装教程:Apple Silicon与Intel配置步骤

DeepLWrite在macOS上可通过官方客户端或网页使用,安装前需确认芯片架构、系统版本与权限设置。AppleSilicon与Intel电脑流程相近,但下载来源、首次启动、安全校验和输入体验配置需重点检查。

时间:2026-07-17 06:52
DeepL Write Windows 2026最新版本地安装配置教程下载与要求

DeepL Write Windows 2026最新版本地安装配置教程下载与要求

DeepLWrite在Windows上可通过官方桌面客户端使用,适合英文润色、改写和语气调整。安装前需确认系统版本、网络连通、账号与隐私设置,并优先从官网获取安装包,避免使用来历不明版本。

时间:2026-07-17 06:52
Grammarly AI新手安装教程 从下载到首次运行全攻略

Grammarly AI新手安装教程 从下载到首次运行全攻略

GrammarlyAI适合英文写作、邮件润色和文档校对,新手可通过官网下载安装桌面端、浏览器扩展或办公插件,完成账号注册、权限设置与首次运行后,即可在常用输入场景中获得语法、语气和表达优化建议。

时间:2026-07-17 06:51
Grammarly AI本地模型运行完整教程:下载路径与性能优化

Grammarly AI本地模型运行完整教程:下载路径与性能优化

GrammarlyAI普通版并不提供公开本地模型包,部署时应优先确认官方渠道。可通过官方客户端配合本地写作模型实现离线润色、路径管理与性能调优,兼顾效率、隐私与稳定性。

时间:2026-07-17 06:51
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜