什么是 ws 库?
ws 是一个轻量级、快速且久经考验的 WebSocket 库,适用于 Node.js,使用 TypeScript 编写。它提供了 WebSocket 协议(RFC 6455)的客户端和服务器端实现。该库具有依赖少、性能高以及完全支持现代 WebSocket 标准(包括 permessage-deflate 压缩)的特点。
为什么需要 ws?
WebSocket 是一种基于 TCP 的双向通信协议,允许客户端和服务器之间实时交换数据,而无需持续的 HTTP 请求。ws 库对于需要即时数据传输的应用程序至关重要:聊天、在线游戏、股票行情、通知系统、协作编辑文档以及任何其他实时服务。
如何安装?
通过 npm 或 yarn 安装:
npm install wsyarn add ws对于 TypeScript 项目,无需额外类型——该库已包含类型声明。
主要功能
- 双向通信 — 同时发送和接收消息。
- 自动重连(通过用户代码实现,但库提供所有必要事件)。
- 支持压缩(permessage-deflate)以减少流量。
- 支持缓冲区和字符串 — 发送文本和二进制数据。
- 事件模型 — 处理 open、message、close、error 事件。
- 集群支持 — 支持多进程工作(通过 broadcast)。
- WebSocket 扩展 — 支持自定义协议和扩展。
TypeScript 代码示例
简单的 WebSocket 服务器和客户端:
// server.tsimport { WebSocketServer } from 'ws';
const wss = new WebSocketServer({ port: 8080 });
wss.on('connection', (ws) => { console.log('客户端已连接');
ws.on('message', (data) => { console.log('收到:', data.toString()); ws.send('来自服务器的问候!'); });
ws.on('close', () => { console.log('客户端已断开'); });});
console.log('服务器在端口 8080 上启动');// client.tsimport WebSocket from 'ws';
const ws = new WebSocket('ws://localhost:8080');
ws.on('open', () => { console.log('已连接到服务器'); ws.send('来自客户端的问候!');});
ws.on('message', (data) => { console.log('服务器响应:', data.toString()); ws.close();});
ws.on('close', () => { console.log('连接已关闭');});何时使用 ws?
ws 库非常适合以下场景:
- 创建高负载的实时应用程序(聊天系统、在线游戏)。
- 实时数据广播(股票数据、IoT 数据流)。
- 通知和警报系统。
- 协作工作(协作编辑、任务看板)。
- 在集群或 PM2 下运行的服务器。
如果您需要一个简洁、快速且可靠的 WebSocket 库用于 TypeScript/Node.js——ws 是事实上的标准。