Skip to content

连接服务器

在与 IIROSE 服务器进行任何交互之前,客户端必须首先建立一个稳定的 WebSocket 连接。

本文档将详细说明如何选择最佳服务器并完成连接。

1. 探测可用服务器

IIROSE 平台拥有多个接入点,为了获得最佳的通信体验,推荐的流程是探测所有已知的服务器地址,并选择延迟最低的一个。

服务器列表

已知的服务器接入点前缀包括:

  • m1
  • m2
  • m8
  • m9
  • m (通常解析为 www)

连接地址格式

每个前缀都对应一个 WebSocket 地址,格式如下:

text
wss://{服务器前缀}.iirose.com:8778

例如:wss://m1.iirose.com:8778

探测方法

客户端应并行地尝试与上述列表中的所有服务器建立 WebSocket 连接,并测量从发起连接到成功 open 事件触发所花费的时间。

选择耗时最短(即延迟最低)的服务器作为本次会话的通信地址。

提示

如果所有服务器都无法在设定的超时时间(例如30秒)内成功连接,客户端应等待一段时间后(例如5秒)进行重试,直到找到可用的服务器。

2. 建立 WebSocket 连接

选定最佳服务器地址后,即可正式创建 WebSocket 实例。

javascript
const targetUrl = 'wss://m1.iirose.com:8778'; // 假设 m1 是最快的服务器
const socket = new WebSocket(targetUrl);

// 必须将二进制类型设置为 arraybuffer 以正确处理压缩数据
socket.binaryType = 'arraybuffer';

3. 数据压缩

IIROSE 的通信协议使用 gzip 压缩以减少网络负载。

  • 发送时:当要发送的报文(UTF-8字符串)长度超过 256 字节时,应先对其进行 gzip 压缩。然后,在压缩后的数据(Buffer)前添加一个字节 0x01 作为压缩标识,最后发送这个新的二进制数据包。如果未超过长度,则直接发送原始的 UTF-8 字节流。

  • 接收时:当收到一个二进制数据包时,首先检查第一个字节。如果第一个字节是 0x01,则说明后续数据是经过 gzip 压缩的,需要先解压才能得到原始的 JSON 字符串。如果不是,则直接将整个数据包按 UTF-8 解码。

重要

正确处理数据压缩 是保证通信正常的 关键

连接成功建立后,下一步就是发送登录报文。