WebSocket API基本信息
- Base url为:'wss://ws-dapi.binance.com/ws-dapi/v1'
- 测试网的Base url为:
wss://testnet.binancefuture.com/ws-dapi/v1
- 测试网的Base url为:
- 单次连接API有效期仅为24小时;预计在 24 小时标记后断开连接。
- Websocket服务器每3分钟发送一个ping消息。
- 如果 websocket 服务器在10分钟内没有收到来自连接的
pong frame,则连接将断开。 - 当客户收到ping消息,必需尽快回复pong消息,同时payload需要和ping消息一致。
- 未经请求的pong消息是被允许的,但是不会保证连接不断开。对于这些pong消息,建议payload为空。
- 如果 websocket 服务器在10分钟内没有收到来自连接的
- 必须通过获取除签名之外的所有请求参数并按字母顺序按名称排序来生成签名payload
- 除非另有说明,否则列表按时间顺序返回。
- 除非另有说明,否则所有时间戳均以 UTC 中的毫秒为单位。
- 除非另有说明,否则所有字段名称和值均区分大小写。
INT参数(如时间戳)应为 JSON 整数,而不是字符串。DECIMAL参数(如 price)应为 JSON 字符串,而不是浮点数。- 用户数据流请求 - 您需要建立单独的WebSocket连接来获得 [账户信息推送](https://developers.binance.com/docs/derivatives/coin-margined-futures/user-data-streams)
WebSocket API响应格式
响应在 text 帧 中以 JSON 格式返回,每帧一个响应。
成功响应示例:
{
"id": "60fa4366-f96e-42fe-a82b-f819952c6db4",
"method": "order.place",
"params": {
"apiKey": "",
"price": "50000",
"quantity": 1,
"side": "BUY",
"symbol": "BTCUSD_PERP",
"timeInForce": "GTC",
"timestamp": 1728413737111,
"type": "LIMIT",
"signature": "996962a19802b5a09d7bc6ab1524227894533322a2f8a1f8934991689cabf8fe",
}
}
失败响应示例:
{
"id": "5761b939-27b1-4948-ab87-4a372a3f6b72",
"status": 400,
"error": {
"code": -1102,
"msg": "Mandatory parameter 'quantity' was not sent, was empty/null, or malformed."
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 2400,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 300,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 1200,
"count": 1
}
]
}
响应字段:
| 名称 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
id |
INT / STRING / null |
YES | 与原来请求的ID一样 |
status |
INT | YES | 响应状态。请看 状态代码 |
result |
OBJECT / ARRAY | YES | 响应内容。请求成功则显示 |
error |
OBJECT | 错误描述。请求失败则显示 | |
rateLimits |
ARRAY | NO | 速率限制状态。请看 速率限制 |
WebSocket API访问限制
- 速率限制与 REST API 相同,并且与 REST API 共享。
- WebSocket 握手尝试消耗权重5。
- ping/pong 帧的速率限制:每秒最多5次。
- 默认情况下,响应中包含速率限制信息,参见
rateLimits字段。 - 可以通过在连接字符串或单个请求中的
returnRateLimits布尔参数来控制rateLimits字段的可见性。 - 例如,使用
wss://ws-dapi.binance.com/ws-dapi/v1?returnRateLimits=false默 认在响应中隐藏rateLimits。在这样的情况下,您可以在请求中传递额外的"returnRateLimits": true参数,当默认隐藏时,就可以在响应中显示速率限制。
WebSocket API连接后进行身份验证
你可以使用会话身份验证请求对已经建立的连接进行身份验证:
session.logon– 进行身份验证,或更改与连接相关联的API密钥。session.status– 检查连接状态和当前API密钥。session.logout– 忘记与连接关联的API密钥。
WebSocket API关于吊销API密钥
如果在活动会话期间,由于 任何 原因(例如IP地址未被加入白名单、API密钥被删除、API密钥没有正确的权限等),在下一个请求后,会话将被吊销,并显示以下错误消息:
{
"id": null,
"status": 401,
"error": {
"code": -2015,
"msg": "Invalid API-key, IP, or permissions for action."
}
}
WebSocket API授权 临时 请求
WebSocket连接只能通过一个API密钥进行身份验证。
默认情况下,经过身份验证的API密钥将用于需要apiKey