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

如何让一个JavaScript客户端同时连接两个不同的WebSocket服务器?

如何让WebSocket客户端同时连接多个服务器?

你不能通过在单个WebSocket构造函数里传入两个URL来同时连接两个服务器——这个构造函数的第二个参数是子协议(可选),不是另一个服务器地址。要从两个不同数据源接收数据,你需要创建两个独立的WebSocket实例,每个实例对应一个服务器。

正确代码示例

// 连接第一个WebSocket服务器
const ws1 = new WebSocket('ws://server1.example.com');
// 连接第二个WebSocket服务器
const ws2 = new WebSocket('ws://server2.example.com');

// 处理第一个服务器的消息
ws1.onmessage = (event) => {
  console.log('来自服务器1的数据:', event.data);
  // 这里写处理服务器1数据的业务逻辑
};

// 处理第二个服务器的消息
ws2.onmessage = (event) => {
  console.log('来自服务器2的数据:', event.data);
  // 这里写处理服务器2数据的业务逻辑
};

// 可选:处理每个连接的状态事件
ws1.onopen = () => console.log('已连接服务器1');
ws1.onerror = (error) => console.error('服务器1连接出错:', error);
ws1.onclose = () => console.log('与服务器1的连接已关闭');

ws2.onopen = () => console.log('已连接服务器2');
ws2.onerror = (error) => console.error('服务器2连接出错:', error);
ws2.onclose = () => console.log('与服务器2的连接已关闭');

关键说明

  • 每个WebSocket实例都是独立的连接,各自维护自身的连接状态(打开/关闭/错误)。
  • 你可以分别为每个实例绑定专属的事件处理函数,精准区分处理两个服务器返回的数据。
  • 如果需要统一处理所有服务器的消息,也可以封装一个通用的消息处理函数,传入不同实例的onmessage。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 09:40:10