Ubuntu服务器WebSocket服务器创建与连接失败问题求助
WebSocket连接失败排查求助
运行环境
- Ubuntu 22.04.2 LTS服务器,搭载Plesk PLSK.10247462.0001
- 使用Cloudflare作为DNS服务器,代理状态的A记录指向该服务器
- 服务器上有一个域名,Codeigniter 4应用运行正常;通过Plesk管理防火墙,已开启“允许所有来源访问8080/tcp端口”
问题情况
先后尝试过15种左右的配置搭建WebSocket服务器,包括在Codeigniter中使用Ratchet启动php server.php,以及最近用Node.js + express-ws的方案,但始终无法建立连接。曾遇到的错误包括:WebSocket connection to 'ws://localhost:8080/' failed: ERR_SSL_PROTOCOL_ERROR,尝试过切换wss协议、更换端口,均未解决。
客户端JavaScript代码
const webSocket = new WebSocket('ws://localhost:8080'); webSocket.addEventListener('open', (event) => { console.log('WebSocket connection opened.'); webSocket.send('Hello, server!'); }); webSocket.addEventListener('message', (event) => { console.log('Received message: ' + event.data); }); webSocket.addEventListener('close', (event) => { console.log('WebSocket connection closed.'); });
最新尝试:Node.js + express-ws搭建步骤
- 在
/var/www/domain目录下创建webs文件夹 - 初始化npm并执行
npm install express express-ws - 创建
server.js文件,内容如下:
const express = require('express'); const expressWs = require('express-ws'); const app = express(); expressWs(app); app.ws('/', (ws, req) => { console.log('WebSocket connection opened.'); ws.send('Hello, client!'); ws.on('message', (message) => { console.log('Received message: ' + message); }); ws.on('close', () => { console.log('WebSocket connection closed.'); }); }); app.listen(8080, () => { console.log('WebSocket server listening on port 8080.'); });
- 执行
node server.js启动服务器,输出显示WebSocket server listening on port 7777.(注:此处输出与代码监听端口不符,疑似存在配置冲突),且通过lsof -i :8080能看到进程占用端口,但连接仍失败;也曾出现过端口未开放的情况。
疑问与求助
- 已尝试用公网IP、127.0.0.1替代localhost,均无效
- 不清楚是否遗漏了基础配置步骤
- 不知道如何正确配置wss协议,是否需要使用自签名证书?
- 请求提供具体的排查方向或配置建议
内容的提问来源于stack exchange,提问作者Valdimir
相关产品推荐
相关产品推荐

