You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Node.js本地应用添加WebSocket服务无法触发连接事件求助

Node.js本地应用添加WebSocket服务无法触发连接事件求助

看起来你遇到的问题大概率是协议不匹配导致的,咱们一步步来排查解决:

1. 修正客户端WebSocket协议

你当前客户端用的是wss://localhost:3000,但你的服务器是普通HTTP服务(没有配置SSL证书),WebSocket协议需要和HTTP协议对应:

  • 普通HTTP对应ws://
  • HTTPS才对应wss://

把客户端代码改成:

this.m_websocketConnection = new WebSocket('ws://localhost:3000');

2. 给客户端添加错误监听,排查具体问题

为了更清楚地知道连接失败的原因,建议给WebSocket实例加上错误和关闭事件监听:

this.m_websocketConnection.onerror = function(error) {
  console.error('WebSocket连接错误:', error);
};
this.m_websocketConnection.onclose = function(event) {
  console.log('WebSocket连接关闭:', event.code, event.reason);
};

这样如果还有问题,你能在浏览器控制台看到具体的错误信息,比如协议不兼容、端口不通等。

3. 确认依赖安装正确

确保你已经安装了ws包,在项目根目录执行:

npm install ws

虽然你能正常require('ws'),但有时候依赖损坏也会导致隐性问题,重新安装可以排除这个可能性。

4. 服务器端补充日志确认服务状态

在创建WebSocket服务后,加一行日志确认服务已启动:

var m_webSocketServer = new WebSocketServer( { server: m_server, autoAcceptConnections: true} );
console.log('WebSocket服务已绑定到HTTP服务器,等待连接...'); // 新增日志

做完这些修改后,重启服务器,刷新客户端页面,应该就能看到服务器控制台输出"A connection"了。

备注:内容来源于stack exchange,提问作者user20352211

火山引擎 最新活动