用户数据流请求
用户数据流订阅
- 用户数据流订阅允许您通过 WebSocket 连接接收与指定帐户相关的所有事件。
- 有两种方式可以启用订阅:
- 如果您拥有已通过验证的会话,则可以使用
userDataStream.subscribe来订阅该已通过验证帐户的相关事件。 - 在任何会话中,无论是否通过验证,如果您能为相关账户提供 API Key, 那么您可以使用
userdataStream.subscribe.signature来订阅一个或多个账户的相关事件。 - 一个帐户在指定连接上只能有一个有效订阅。
- 如果您拥有已通过验证的会话,则可以使用
- 订阅由用订阅时返回的
subscriptionId标识。该subscriptionId允许您将收到的事件映射到给定的订阅。 - 可以使用
session.subscriptions查找会话的所有有效订阅。 - 限制
- 单个会话最多可同时支持1,000 个有效订阅。
- 尝试启用超出此限制的新订阅将导致错误。
- 如果您的帐户非常活跃,我们建议您不要一次启用过多的订阅,以免连接过载。
- 单个会话在其生命周期内最多可处理65,535 个订阅。
- 如果达到此限制,您将收到错误,并且必须重新建立连接才能启用新的订阅。
- 单个会话最多可同时支持1,000 个有效订阅。
- 要验证用户数据流订阅的状态,请检查
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
参数:
| 名称 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
apiKey | STRING | YES |
响应:
{
"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
参数:
| 名称 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
subscriptionId | INT | NO | 不带参数调用时,将关闭所有订阅。带 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
参数:
| 名称 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
apiKey | STRING | YES | |
recvWindow | DECIMAL | NO | 最大值: 60000。 支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。 |
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。 |
signature | STRING | YES |
数据源: 缓存
响应:
{
"id": "d3df8a22-98ea-4fe0-9f4e-0fcea5d418b7",
"status": 200,
"result": {
"subscriptionId": 0
}
}