-
Notifications
You must be signed in to change notification settings - Fork 1
WebSocket API Home
Протокол WebSocket
(«веб-сокет»), описанный в спецификации RFC 6455, обеспечивает возможность обмена данными между браузером и сервером через постоянное соединение. Данные передаются по нему в обоих направлениях в виде «пакетов», без разрыва соединения и дополнительных HTTP-запросов.
Binance даёт возможность подключаться к нему с помощью веб-сокетов, менять потоки в реальном времени, использовать комбинированные потоки.
Оглавление
[TOC]
Детальная информация по потокам
- Базовый эндпоинт: wss://stream.binance.com:9443
- Доступ к потокам можно получить как в отдельном необработанном потоке, так и в комбинированном потоке.
- Доступ к необработанному потоку: /ws/<streamName>. Например wss://stream.binance.com:9443/ws/bnbbtc@depth
- Доступ к комбинированным потокам: /stream?streams=<streamName1>/<streamName2>/<streamName3>
- В комбинированном потоке данные приходят в таком формате: {"stream":"<streamName>","data":<rawPayload>}. В необработанном так приходит непосредственно содержимое data
- Все названия тикерных символов должны быть в нижнем регистре
- Одно соединение с stream.binance.com действительно только 24 часа; ожидайте отключения через 24 часа
- Сервер веб-сокетов будет отправлять
ping frame
каждые 3 минуты. Если сервер веб-сокетов не получит ответныйpong frame
за 10 минут, соединение будет разорвано. Разрешены не запрашиваемыеpong frames
.
-
Соединения WebSocket имеют ограничение в 5 входящих сообщений в секунду. Сообщением считается:
ping frame
pong frame
- управляющее сообщение JSON (например, подписка, отказ от подписки)
-
Соединение, выходящее за рамки лимита, будет отключено; IP-адреса, которые постоянно отключаются, могут быть забанены.
-
Одно соединение может прослушивать максимум 1024 потока.
- Если отправить определенный JSON через экземпляр веб-сокета, можно подписаться или отказать от подписки на потоки. Примеры таких JSON ниже.
-
id
, используемый в JSON, представляет собой unsigned INT, используемый в качестве идентификатора для однозначной идентификации сообщений, идущих туда и обратно. - In the response, if the
result
received isnull
this means the request sent was a success for non-query requests (e.g. Subscribing/Unsubscribing). - В ответе, если полученный
result
равенnull
, это означает, что отправленный запрос был успешен. Это актуально для внеочередных запросов (например, подписка / отказ от подписки).
-
Request
{ "method": "SUBSCRIBE", "params": [ "btcusdt@aggTrade", "btcusdt@depth" ], "id": 1 }
-
Response
{ "result": null, "id": 1 }
-
Request
{ "method": "UNSUBSCRIBE", "params": [ "btcusdt@depth" ], "id": 312 }
-
Response
{ "result": null, "id": 312 }
-
Request
{ "method": "LIST_SUBSCRIPTIONS", "id": 3 }
-
Response
{ "result": [ "btcusdt@aggTrade" ], "id": 3 }
В настоящее время единственное свойство, которое может быть установлено, это включение/отключение полезной нагрузки для комбинированного потока.
Это свойство установлено в значение false
при использовании соединения /ws/
(необработанные потоки, "raw streams") и true
при подключении к /stream/
.
-
Request
{ "method": "SET_PROPERTY", "params": [ "combined", true ], "id": 5 }
-
Response
{ "result": null, "id": 5 }
-
Request
{ "method": "GET_PROPERTY", "params": [ "combined" ], "id": 2 }
-
Response
{ "result": true, // Указывает, что в сombined установлен в значение true. "id": 2 }
Error Message | Description |
---|---|
{"code": 0, "msg": "Unknown property","id": %s} | Параметр, используемый в SET_PROPERTY или GET_PROPERTY неправильный. |
{"code": 1, "msg": "Invalid value type: expected Boolean"} | Значение может быть толькоtrue или false . |
{"code": 2, "msg": "Invalid request: property name must be a string"} | Указанное имя свойства недействительно. |
{"code": 2, "msg": "Invalid request: request ID must be an unsigned integer"} | Параметр id не указан или в параметре id используется неправильный тип данных (не целочисленное целое). |
{"code": 2, "msg": "Invalid request: unknown variant %s, expected one of SUBSCRIBE , UNSUBSCRIBE , LIST_SUBSCRIPTIONS , SET_PROPERTY , GET_PROPERTY at line 1 column 28"} |
Возможная опечатка в методе или метод не соответствует ожидаемым значениям. |
{"code": 2, "msg": "Invalid request: too many parameters"} | Указаны не нужные параметры. |
{"code": 2, "msg": "Invalid request: property name must be a string"} | Нет названия параметра |
{"code": 2, "msg": "Invalid request: missing field method at line 1 column 73"} |
method не был указан в данных. |
{"code":3,"msg":"Invalid JSON: expected value at line %s column %s"} | Отправленный JSON имеет неправильный синтаксис. |