Skip to main content

端点

连接流程

1. 连接

打开WebSocket连接。连接时无需身份验证。

2. 登录

在连接后 30秒 内发送登录消息:
空的 channels 数组订阅所有可用频道。要订阅特定频道:
可选启用可靠传递和消息确认:

3. 登录确认

成功后,服务器响应:

4. 接收更新

数据消息格式如下:
各频道完整的负载结构见下文负载结构

5. 保持活跃

服务器每 30秒 发送一次 ping:
120秒 内回复 pong,否则连接将被关闭:
您也可以从客户端发送 ping — 服务器会回复 pong。

频道

客户端过滤频道

这些频道仅传递属于您 clientName 的数据:

全局频道

所有订阅者都会收到:

可靠投递与确认

默认情况下,消息是「发后即忘」的——快速,但断连期间丢失的消息就此消失。在登录时启用可靠投递,即可获得带确认与重放的至少一次投递:
启用后,每条 data 消息都携带 requireAck: true,你必须确认它,服务端才能将其从缓冲区释放:
或在一条消息中确认一个范围(推荐,利于吞吐):
工作原理:
  • 服务端为每个订阅缓冲最多 100 条未确认消息,并重发任何 30 秒内未被确认的消息。
  • seq 按订阅且严格递增,因此 seq 出现间隙意味着你漏掉了消息。
  • 要在重连后恢复漏掉的消息,从你处理的最后一个 seq 请求重放:
若你落后超过 100 条消息的缓冲,最旧的未确认消息会被丢弃。请及时确认(或使用 ack_batch),并将任何 replay 无法填补的 seq 间隙视为通过 REST 端点(GET /ordersGET /bets)对账的信号。

变更订阅

无需重连即可变更频道:
服务端以 channels_updated 回复。

赔率单订阅

betslip 频道为你关注的选项推送实时赔率。有两种订阅方式:
  1. 通过 REST——调用 GET /betslip 会注册一个 60 秒滑动窗口;每次调用重置计时器并立即通过 WebSocket 广播一份快照。
  2. 通过 WebSocket——发送 subscribe_betslip 消息并附显式 ttl(10–3600 秒)与博彩商列表以获得更精细的控制,用 unsubscribe_betslip 提前取消。
每客户端最多 20 个活跃赔率单订阅(REST + WS 合计)。消息结构与 subscribed_betslip 确认见下文赔率单订阅消息

示例:Python 客户端

示例:JavaScript 客户端

消息类型

客户端 → 服务端

服务端 → 客户端

赔率单订阅消息

在订阅前,betslip 频道必须在你的订阅中(通过 loginupdate_channels 添加)。

subscribe_betslip

  • bookmakers 必须为非空列表。
  • ttl 可选(秒),限制在 10–3600 秒;省略时默认 60 秒
  • 对同一选项重新订阅会刷新 TTL 并更新博彩商集合(幂等)。
服务端确认:
你没有账户的博彩商会从订阅中剔除,并在 skipped 数组中返回。每客户端最多 20 个活跃赔率单订阅(REST + WS 合计)。

unsubscribe_betslip

负载结构

数据消息将频道负载包裹在信封 {type, channel, event, payload, ts, seq} 中。ordersbetssettlements 频道投递完整数据库行row_to_json);balanceemergencybetslip 使用自定义结构。

Orders

orders 表的完整行:

Bets / settlements

bets 表的完整行(settlements 频道使用相同结构):
同时订阅 betssettlements 会使结算更新被投递两次——每个频道各一次。若想要专门的结算流,请单独使用 settlements

Balance

Emergency

Betslip

在赔率单订阅活跃期间推送。对于期货,负载携带 futureIdparticipantId 而非 fixtureId 赛事:
期货(即将推出):
期货赔率单的 WebSocket 广播尚未启用。订阅基础设施已就位,将在后续版本中激活。

连接限制

后续步骤

币种与额度

各币种下数值如何计价与换算。

错误处理

处理错误响应与被拒原因。