连接服务器
在与 IIROSE 服务器进行任何交互之前,客户端必须首先建立一个稳定的 WebSocket 连接。
本文档将详细说明如何选择最佳服务器并完成连接。
1. 探测可用服务器
IIROSE 平台拥有多个接入点,为了获得最佳的通信体验,推荐的流程是探测所有已知的服务器地址,并选择延迟最低的一个。
服务器列表
已知的服务器接入点前缀包括:
m1m2m8m9m(通常解析为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解码。
重要
正确处理数据压缩 是保证通信正常的 关键。
连接成功建立后,下一步就是发送登录报文。