WebSocket API基本信息
- Base url为:'wss://ws-fapi.binance.com/ws-fapi/v1'
- 测试网的Base url为:
wss://testnet.binancefuture.com/ws-fapi/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://binance-docs.github.io/apidocs/futures/cn/#websocket-2)
请求示例:
{
"id": "9ca10e58-7452-467e-9454-f669bb9c764e",
"method": "order.place",
"params": {
"apiKey": "yeqKcXjtA9Eu4Tr3nJk61UJAGzXsEmFqqfVterxpMpR4peNfqE7Zl7oans8Qj089",
"price": "42088.0",
"quantity": "0.1",
"recvWindow": 5000,
"side": "BUY",
"signature": "996962a19802b5a09d7bc6ab1524227894533322a2f8a1f8934991689cabf8fe",
"symbol": "BTCUSDT",
"timeInForce": "GTC",
"timestamp": 1705311512994,
"type": "LIMIT"
}
}
请求字段:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
id | INT / STRING / null | YES | 任意的 ID 用于匹配对请求的响应 |
method | STRING | YES | 请求函数名称 |
params | OBJECT | NO | 请求参数。如果没有参数可以省略 |
-
请求
id
是任意的。可以使用 UUID、顺次 ID、当前时间戳等。 服务器不会以任何方式解释id
,只是在响应中回显它。可以在一个会话中自由重复使用 ID,不过请注意不要一次发送多个具有相同 ID 的请求,因为否则可能无法区分响应。
-
请求函数名称可以以显式版本为前缀,例如:
"v3/order.place"
-
params
的顺序不重要。
WebSocket API响应格式
响应在 text 帧 中以 JSON 格式返回,每帧一个响应。
成功响应示例:
{
"id": "43a3843a-2321-4e45-8f79-351e5c354563",
"status": 200,
"result": {
"orderId": 336829446,
"symbol": "BTCUSDT",
"status": "NEW",
"clientOrderId": "FqEw6cn0vDhrkmfiwLYPeo",
"price": "42088.00",
"avgPrice": "0.00",
"origQty": "0.100",
"executedQty": "0.000",
"cumQty": "0.000",
"cumQuote": "0.00000",
"timeInForce": "GTC",
"type": "LIMIT",
"reduceOnly": false,
"closePosition": false,
"side": "BUY",
"positionSide": "BOTH",
"stopPrice": "0.00",
"workingType": "CONTRACT_PRICE",
"priceProtect": false,
"origType": "LIMIT",
"priceMatch": "NONE",
"selfTradePreventionMode": "NONE",
"goodTillDate": 0,
"updateTime": 1705385954229
},
"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": 0
}
]
}
失败响应示例:
{
"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-fapi.binance.com/ws-fapi/v1?returnRateLimits=false
默认在响应中隐藏rateLimits
。在这样的情况下,您可以在请求中传递额外的"returnRateLimits": true
参数,当默认隐藏时,就可以在响应中显示速率限制。