一、WebSocket 能干什么?
WebSocket 是一种全双工通信协议,建立一次连接后,客户端和服务器可以随时互相发送消息,适合需要实时双向通信的场景,比如:实时聊天、在线游戏状态同步、股票行情推送、IoT 设备监控、在线协作编辑、实时通知等。相比 HTTP 的“一问一答”,WebSocket 连接持久、延迟低、资源消耗少。
二、环境准备(以 Node.js 为例)
安装 Node.js 和 npm
在终端执行:
node -v
npm -v
如果显示版本号,说明已安装;否则去 Node.js 官网下载并安装 LTS 版本。
创建项目目录并初始化
mkdir websocket-demo
cd websocket-demo
npm init -y
这会生成 package.json文件。
安装 ws 模块
npm install ws
ws是 Node.js 中常用的 WebSocket 库,安装后会在当前目录生成 node_modules和 package-lock.json。
三、新增文件:创建 WebSocket 服务器
在项目根目录下创建 server.js,内容如下:
const WebSocket = require('ws');
// 创建 WebSocket 服务器,监听 8080 端口
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', (ws) => {
console.log('客户端已连接');
// 向客户端发送欢迎消息
ws.send('欢迎连接 WebSocket 服务器!');
// 监听客户端发来的消息
ws.on('message', (message) => {
console.log('收到消息:', message.toString());
// 向该客户端回传消息
ws.send(`服务端已收到:${message}`);
});
ws.on('close', () => {
console.log('客户端断开连接');
});
});
console.log('WebSocket 服务器运行于 ws://localhost:8080');
保存后,在终端执行:
node server.js
看到日志输出,说明 WebSocket 服务器已启动。
四、使用 PM2 管理 WebSocket 服务
全局安装 PM2
npm install -g pm2
用 PM2 启动 WebSocket 服务
pm2 start server.js --name websocket-server
这样服务会在后台运行,即使关闭终端也不会停止。
常用 PM2 管理命令
# 查看所有进程
pm2 list
# 查看日志
pm2 logs websocket-server
# 停止服务
pm2 stop websocket-server
# 重启服务
pm2 restart websocket-server
# 删除进程(从 PM2 列表中移除)
pm2 delete websocket-server
设置开机自启(可选)
# 生成开机启动配置(根据系统自动适配)
pm2 startup
# 保存当前进程列表,开机时自动恢复
pm2 save
五、测试 WebSocket 连接
在浏览器控制台(F12 → Console)中执行:
const ws = new WebSocket('ws://localhost:8080');
ws.onopen = () => {
console.log('已连接到 WebSocket 服务器');
ws.send('Hello, server!');
};
ws.onmessage = (event) => {
console.log('收到服务器消息:', event.data);
};
ws.onclose = () => {
console.log('连接已关闭');
};
如果看到“已连接”和消息回显,说明 WebSocket 服务已正常工作。
六、生产环境建议
线上建议使用 wss://(WebSocket over TLS)保证安全,可通过 Nginx 反向代理并配置 SSL 证书实现。
如需多实例负载均衡,可在 PM2 启动时使用 -i max或指定实例数,并配合 Nginx 做负载均衡。
如果你有具体项目框架(如 Express、Midway 等),可以告诉我,我可以帮你把 WebSocket 集成到现有项目中。