跳转到主要内容

端点

生产网关:
wss://v5.oddspapi.io/ws
您的账户可能使用不同的区域或主机名。请使用仪表板中显示的端点。

推荐的集成流程(生产环境)

使用REST获取快照,使用WebSocket获取实时更新:
  1. 通过REST获取初始快照(例如/fixtures/fixtures/odds
  2. 连接到WebSocket并发送带有过滤器的login
  3. 收到login_ok后开始处理更新
  4. 持久化serverEpoch和每个频道的lastSeenId(来自entryId
  5. 重新连接时,发送serverEpoch + lastSeenId以恢复
  6. 如果收到snapshot_required,通过REST重新获取快照

登录模式

WebSocket支持仅登录订阅。要更改过滤器或频道,请使用新的login重新连接。

消息信封

所有更新共享一个公共信封:
{
  "channel": "scores",
  "type": "UPDATE",
  "payload": { "...": "..." },
  "ts": 1765497902846,
  "entryId": "1765497902846-3221"
}
  • channel – 流名称(例如oddsfixtures
  • type – 消息类型(目前始终为UPDATE
  • payload – 频道特定数据
  • ts – UTC时间戳(毫秒)
  • entryId – 用于重放/恢复的游标
entryId不保证是连续的。有关完整说明,请参阅恢复和重放

编码:JSON vs 二进制

在登录时使用receiveType控制。
  • "json"(默认)— 所有消息作为UTF-8 JSON到达
  • "binary" — 数据帧使用MessagePack;控制帧保持JSON
客户端提示:
import msgpack from "@msgpack/msgpack";

const obj = typeof raw === "string"
  ? JSON.parse(raw)
  : msgpack.decode(new Uint8Array(raw));
控制消息如login_oksnapshot_requiredresume_complete始终是JSON,即使在二进制模式下也是如此。

频道类型

  • 赛事范围fixturesscoresoddsbookmakers。— 有效载荷包含fixtureId
  • 期货范围futuresbookmakersFuturesoddsFutures — 包含futureId
  • 全局currencies — 无ID
有关每个频道的模式,请参阅/websocket/channels/*

吞吐量指南

  • 对于高容量频道如odds,首选receiveType: "binary"
  • 使用过滤器(sportIdsbookmakers)减少噪音
  • odds应被视为最新状态,而不是交易记录账本

WebSocket限制

限制类型描述
并发连接apiKey组强制执行(最大:5)。参见错误4003
背压如果您的客户端无法跟上,连接将被关闭(4002)。
重放窗口参见恢复和重放中的resumeWindowMs
消息速率没有明确限制,但建议使用过滤器以提高性能

询问AI助手

想使用您喜欢的AI探索或提问关于此页面的问题? 点击下面的链接——每个链接都会在选定的工具中打开此页面并预填提示: