Ping/Pong
两路推送都支持标准 WebSocketping/pong。你可以按间隔主动调用 ping(),并通过跟踪 pong 来确认连接存活。
订阅
默认情况下,已连接的客户端会收到所有运动项目和联赛的全部市场更新。若要收窄全量推送,可在套接字进入open 之后,以 JSON 文本帧发送下列命令之一。命令在该连接的生命周期内生效。
从未发送过订阅命令的客户端保持全量广播模式,因此现有集成无需改动即可继续工作。
按 gameID、联赛或运动项目订阅
安装过滤器。gameIDs 为 24 位 Mongo ObjectID 十六进制字符串;leagueIDs 为短代码,如 NBA / MLB / EPL;sportIDs 为小写标识,如 basketball / baseball / soccer。
replace: true清除该连接上任何现有订阅,并安装新列表。将连接切换为过滤模式。replace: false将新键追加到该连接已订阅的集合中。
gameID、parentGameID、league 或 sport 与你的任一订阅匹配,你就会收到该更新。
取消订阅
移除指定键。连接保持当前模式(过滤或全量订阅)。订阅全部
显式的全量订阅。适用于先前已通过subscribe 收窄范围、现在想在不断开连接的情况下重新扩大范围。会清除该连接上所有按键订阅。
路由语义
- 订阅某个
gameID时,也会收到parentGameID匹配的子赛事更新(例如 F5-MLB 衍生盘会送达父赛事的订阅者)。 - 联赛 ID 不区分大小写 —
mlb与MLB等价。 - 运动项目 ID 不区分大小写 —
baseball与Baseball等价。 - 数组中的空字符串会被忽略。
subscribe在replace: false且 数组全部为空时为无操作(有缺陷的客户端不会因发送空的追加订阅而意外把自己订空)。subscribe在replace: true且 数组全部为空时,是合法的「清除我的全部订阅」路径 — 连接进入过滤模式且订阅为零,在你再次订阅或发送subscribeAll之前不会收到任何消息。
消息
/price-stream 上的每条消息都以二元组 [type, payload] 到达。会广播三种消息类型。
orderUpdate
任意市场中的订单发生变化时发出(新建、修改、成交或取消)。载荷仅包含接收用户有权看到的 sideOrders(自己的订单以及可成交的对手方)。
以 orderType: "postArb" 下的订单,其 sideOrders 条目会包含 isPostArb: true;否则省略该字段。
moneyline1x2 盘口的 orderUpdate
对于 moneyline1x2(足球三项盘:主胜 / 平局 / 客胜),投注对象由 market + side 组合标识,而不是 participantID / OU:
market— 该盘口所针对的结果:参赛者 ObjectID 十六进制(主队或客队),或字面字符串"draw"。side— 对该结果的"yes"或"no"。OU、total和spread不出现,participantID为空 — 请使用market+side。
sideOrders 的每一条记录上。
gameUpdate
赛事被创建或其状态发生变化时发出(盘口开盘、收盘、开赛时间更新)。载荷为完整渲染后的赛事对象。
messageType 值:marketOpen、marketClosed。将该字段视为可扩展,并忽略未知值。