ISPmanager中Node.js WebSocket服务端口配置故障求助
在ISPmanager中运行WebSocket服务的解决方法
一、先修正代码中的错误
你的代码存在两处关键问题:
process.env.SOCKET是ISPmanager提供的Unix域套接字路径,并非端口号,创建WebSocket Server时不能用port参数,需改用path;如果要指定端口,直接填写大于1024的非特权端口号(如8080),同时确保端口未被占用。connection事件的回调参数里,没有client这个参数,发送消息需使用第一个参数ws。
修正后的代码示例:
const { Server } = require('ws'); const socketPath = process.env.SOCKET; // 推荐:使用ISPmanager提供的Unix套接字 const server = new Server({ path: socketPath }); // 如果要使用端口,替换成下面的代码: // const server = new Server({ port: 8080 }); server.on('connection', function connection(ws, request) { console.log('客户端已连接'); ws.send('连接成功'); });
二、ISPmanager中的配置要点
- 安装依赖:在ISPmanager的Node.js应用管理界面,找到你的项目,点击「安装依赖」,确保
ws包被正确安装;也可手动进入项目目录执行npm install ws。 - 环境变量与启动设置:
- 若使用Unix套接字,确认ISPmanager已为应用自动配置
SOCKET环境变量,启动文件设为server.js,工作目录指向项目根目录。 - 若使用端口,需在ISPmanager的防火墙设置中开放该端口,同时确认端口未被其他服务占用。
- 若使用Unix套接字,确认ISPmanager已为应用自动配置
- 启动与日志检查:在控制面板中启动Node.js应用,查看日志确认无启动报错(如权限不足、依赖缺失等)。
三、WebSocket连接测试
- 用Unix套接字时,需通过Nginx反向代理转发请求,可在ISPmanager的域名配置中添加如下规则:
location /ws { proxy_pass http://unix:/path/to/your/socket; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }
之后用ws://你的域名/ws发起连接。
- 用端口时,直接使用
ws://你的域名:端口发起连接。
原参考文档(ISPmanager6 Lite Node.js章节)翻译摘要:
- ISPmanager支持通过控制面板可视化管理Node.js应用,可配置环境变量、指定启动文件、监控进程状态
- 针对Unix套接字部署场景,应用需通过
process.env.SOCKET获取系统分配的套接字路径,绑定到该路径而非端口- 项目依赖可通过控制面板一键安装,或在终端执行
npm install手动安装- 应用启动后,可在控制面板查看实时日志、执行重启/停止操作
内容的提问来源于stack exchange,提问作者wainame
相关产品推荐
相关产品推荐

