跳到主要内容

用户数据流请求

用户数据流订阅​

常规信息:

  • 用户数据流订阅允许您通过 WebSocket 连接接收与指定帐户相关的所有事件。
  • 有两种方式可以启用订阅:
    • 如果您拥有已通过验证的会话,则可以使用 userDataStream.subscribe 来订阅该已通过验证帐户的相关事件。
    • 在任何会话中,无论是否通过验证,如果您能为相关账户提供 API Key, 那么您可以使用 userdataStream.subscribe.signature 来订阅一个或多个账户的相关事件。
    • 一个帐户在指定连接上只能有一个有效订阅。
  • 订阅由用订阅时返回的 subscriptionId 标识。该 subscriptionId 允许您将收到的事件映射到给定的订阅。
  • 可以使用 session.subscriptions 查找会话的所有有效订阅。
  • 限制
    • 单个会话最多可同时支持1,000 个有效订阅。
      • 尝试启用超出此限制的新订阅将导致错误。
      • 如果您的帐户非常活跃,我们建议您不要一次启用过多的订阅,以免连接过载。
    • 单个会话在其生命周期内最多可处理65,535 个订阅。
      • 如果达到此限制,您将收到错误,并且必须重新建立连接才能启用新的订阅。
  • 要验证用户数据流订阅的状态,请检查 session.status 中的 userDataStream 字段:
    • null - 此 WebSocket API 上不提供用户数据流订阅。
    • true - 此会话中至少有一个有效订阅。
    • false - 此会话中没有有效订阅。

订阅用户数据流 (USER_STREAM)​

{
"id": "5494febb-d167-46a2-996d-70533eb4d976",
"method": "userDataStream.subscribe",
"params": {
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A"
}
}

订阅当前 WebSocket 连接中的用户数据流。

注意:

  • 此方法需要使用 Ed25519 密钥并经过鉴权的 WebSocket 连接。请参考 session.logon。
  • 如果需要查看订阅状态,可以通过 session.status 查询,当 userDataStream 字段值为 true 时,表示您有一个有效的订阅。
  • 用户数据流在 JSON 和 SBE 会话 中均可用。
    • 有关事件格式详情,请参阅 用户数据流。
    • 对于 SBE,仅支持 SBE 模式 2:1 或更高版本。

权重: 2

参数:

名称类型是否必须描述
apiKeySTRINGYES

响应:

{
"id": "d3df8a21-98ea-4fe0-8f4e-0fcea5d418b7",
"status": 200,
"result": {
"subscriptionId": 0
}
}

取消订阅用户数据流​

{
"id": "5494febb-d167-46a2-996d-70533eb4d976",
"method": "userDataStream.unsubscribe"
}

取消订阅当前 WebSocket 连接中的用户数据流。

请注意 session.logout 只会关闭由 userDataStream.subscribe 创建的订阅,并不会关闭通过 userDataStream.subscribe.signature 创建的订阅。

权重: 2

参数:

名称类型是否必须描述
subscriptionIdINTNO不带参数调用时,将关闭所有订阅。带 subscriptionId 参数调用时,将尝试关闭该订阅ID对应的订阅(如果存在)。

响应:

{
"id": "d3df8a21-98ea-4fe0-8f4e-0fcea5d418b7",
"status": 200,
"result": {}
}

显示所有订阅​

{
"id": "5494febb-d167-46a2-996d-70533eb4d976",
"method": "session.subscriptions"
}

注意:

  • 用户按需要跟踪相关帐户的对应订阅情况。

权重: 2

参数: NONE

数据源: 缓存

响应:

{
"id": "d3df5a22-88ea-4fe0-9f4e-0fcea5d418b7",
"status": 200,
"result": [
{
"subscriptionId": 0
},
{
"subscriptionId": 1
}
]
}

通过签名订阅的方式订阅用户数据流 (USER_STREAM)​

{
"id": "5494febb-d167-46a2-996d-70533eb4d976",
"method": "userDataStream.subscribe.signature",
"params": {
"timestamp": 1770736694138,
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "15af09e41c36f3cc61378c2fbe2c33719a03dd5eba8d0f9206fbda44de717c88"
}
}

权重: 2

参数:

名称类型是否必须描述
apiKeySTRINGYES
recvWindowDECIMALNO最大值: 60000。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestampLONGYES用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
signatureSTRINGYES

数据源: 缓存

响应:

{
"id": "d3df8a22-98ea-4fe0-9f4e-0fcea5d418b7",
"status": 200,
"result": {
"subscriptionId": 0
}
}