连接管理-最佳实践

  • 更新

用户可以使用以下任一方式连接到 Deribit 平台 连接范围的 或者 会话范围的 身份验证令牌。每种方法都有不同的特性、寿命和限制。了解这些范围的工作原理有助于确保可靠的连接、WebSocket 功能的最佳使用以及遵守平台限制,例如每个 API 密钥的同步连接数或会话数

极限

  • 子账户的最大数量: 20

  • 每个(子)账户的最大 API 密钥数: 8

  • 每个 IP 的最大连接数: 32

  • 每个 API 密钥的最大会话数: 16

连接

A 连接 是客户机和服务器之间通过网络连接的单一、连续的链接。用户可以使用进行身份验证 connection 范围,这些身份验证连接是 不计入限额。两者都不是 connection 也不 session 范围是在请求中指定的,服务器将默认使用 connection 范围。

连接限制

Deribit 强制执行的限制为 每个 IP 地址 32 个同时连接,无论用户是否经过身份验证。此限制适用于所有当前打开的连接,包括:

  • HTTP 请求(GET/POST) — 每个请求在其持续时间内都会打开一个新的连接

  • WebSocket 连接 — 连接在连接期间保持打开状态

小心

32 个连接限制涵盖两者 会话范围的连接范围的 连接。例如,您可以打开每种类型的 16 个连接,或者 1 个会话范围的连接和 31 个标准连接。任何试图建立 来自同一 IP 的第 33 个连接 将被拒绝 HTTP 429(请求过多) 回应。

注意

Deribit 网页每个用户会话使用 2 个活跃连接。在设计高频或多选项卡集成时请记住这一点,以避免无意中超过限制

会话

会话不仅限于单个连接,还代表用户与服务器之间的交互时期,可能跨越多个连接。用户可以使用进行身份验证 session:name 作用域将他们的连接与命名会话绑定。

会话限制

Deribit 强制执行 每个 API 密钥或用户名/密码登录限制为 16 个活跃会话

在以下情况下会创建新会话:

  • 您可以生成新的身份验证令牌并通过指定会话名称 session:name 范围,或

  • 您在不提供会话名称的情况下调用公共/身份验证端点。

如果创建的新会话超过 16 个会话的限制, 最旧的活动会话会自动删除

高效、可靠的连接管理最佳实践

  1. 优先订阅而不是 REST 投票

    • 使用 WebSocket 订阅 (例如,订阅),而不是通过 REST 端点持续轮询数据。

    • 订阅是 更有效率,减少延迟,并帮助保持在内部 速率限制

  2. 不要像 REST 一样使用 WebSocket

    • 避免使用以下模式:

      打开会话 → 读一次 → 关闭 → 重复。

      这效率低下,可能会导致 连接混乱 和节流。

    • 相反, 保持会话处于打开状态 然后使用 实时订阅 或批量请求。

  3. 尽可能使用经过身份验证的请求

    • 即使是公共数据,也更喜欢 经过验证的 WebSocket

    • 经过身份验证的用户将受益于 更高的速率限制 而且是 受到 IP 速率限制的可能性较小 或已断开连接。

    • 如果发现任何滥用或滥用,我们 主动伸出援手 在采取限制性措施之前,先向经过身份验证的客户端。

  4. 避免连接过载

    • 订阅 一次频道太多了 可能会导致 connection_too_slow 错误。这发生在客户端 无法足够快地读取所有传入事件,导致 积压 待处理消息的数量。

    • 为避免断开连接:

      • 仅订阅必要的频道。

      • 确保您的客户高效、持续地读取和处理消息。

HTTP 连接寿命

每个已建立的 HTTP 连接的过期计时器均为 15 分钟。希望在此期限之后保持 HTTP 连接的用户应使用签名授权在不影响会话限制的情况下继续访问

断开连接时取消

中的断开连接时取消 (COD) 功能 API 支持两种类型的范围设置:连接和帐户。请注意,不支持通过 HTTP 在断开连接时取消。

  • 连接范围: 当将 COD 设置为连接时,它仅适用于通过其设置的特定连接。此设置不影响任何其他现有或未来的连接。如果需要,每个连接都必须单独启用 COD。

  • 账户范围: COD 范围设置为账户可将该功能扩展到设置该功能的初始连接,并自动将其应用于在同一账户下建立的所有后续连接。这样可以确保默认情况下为新连接启用 COD,而无需为每个连接单独设置。

提示

为了提高 COD 触发的可靠性,建议 启用心跳 在你的 WebSocket 连接上。心跳使平台能够更快地检测到过时或断开的连接,并在需要时更快地激活 COD

FIX 的实现

启动与的会话后 Logon (A) 消息,用户可以选择使用 Tag 9001 为该会话启用或禁用 “断开连接时取消”。稍后,在注销时,他们可以使用以下命令覆盖此设置 Tag 9003.

消息类型

  • Logon (A): 启动会话。必须是客户端发送的第一条消息。

  • LogOut (5):任何一方都使用它来终止会话。发送者必须等待回声后才能关闭套接字。

标签
  • Tag 9001 - CancelOnDisconnect:控制会话级 COD 的布尔标志。默认为 false (N)。如果未指定,则使用账户的默认设置。

  • Tag 9003 - DontCancelOnDisconnect: 如果设置为 Y,尽管之前在登录或账户级别进行了设置,但仍会禁用连接的 COD。默认为 false (N)