You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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搭建步骤

  1. 在/var/www/domain目录下创建webs文件夹
  2. 初始化npm并执行npm install express express-ws
  3. 创建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.');
});
  1. 执行node server.js启动服务器,输出显示WebSocket server listening on port 7777.(注:此处输出与代码监听端口不符,疑似存在配置冲突),且通过lsof -i :8080能看到进程占用端口,但连接仍失败;也曾出现过端口未开放的情况。

疑问与求助

  • 已尝试用公网IP、127.0.0.1替代localhost,均无效
  • 不清楚是否遗漏了基础配置步骤
  • 不知道如何正确配置wss协议,是否需要使用自签名证书?
  • 请求提供具体的排查方向或配置建议

内容的提问来源于stack exchange,提问作者Valdimir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 21:21:46