使用PM2管理websocket

作者: admin | 发布时间: 2026-02-09 20:02:05 | ★ 0


一、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 集成到现有项目中。