#javascript #websocket #binance
#javascript #websocket #binance
Вопрос:
Я использую binance для получения данных об Ethereum. Я выполнил одиночный ответ kLine с запросом GET к API, поэтому я получаю старые данные, но теперь я хочу, чтобы KLINE и цена обновлялись автоматически.
Для этого мне нужно подключиться к веб-сокету Binance. Как мне это сделать? Я использую Javascript.
Ответ №1:
Этот код открывает веб-сокет, связанный с Binance. Он получает данные о (символе) ETH / USDT каждые 2 секунды (глубина). Каждые 30 минут данные присваивают переменной «x» значение true, чтобы вы знали, когда добавлять строку.
Если вы хотите изменить данные о 30 минутах, символе, глубине или клайне, вам следует ознакомиться с документацией Binance api о том, как это сделать правильно.
// Symbol: ETH/USDT - Kline 30 minutes.
var socket = new WebSocket('wss://stream.binance.com:9443/ws/ethusdt@kline_30m');
// When message received from web socket then...
socket.onmessage = function (event) {
// Easier and shorter.
var data = JSON.parse(event.data);
// "x" means: Is this kline closed? Return "true" if closed. Closed means new line to be added.
if (data.k.x === true) {
log("Add line.");
// Adding a line with my custom function.
addLine(data);
} else {
// Updating line with my custom function.
updatePrice(data);
}
}
Комментарии:
1. Я должен отметить: иногда у меня возникает ощущение, что данные, полученные из websocket, не равны данным, полученным из
GET /api/v3/klines
запроса API. Я запускаю свой код уже около года, и результаты продолжают отличаться при генерации вызова websocket и kline api. Код для генерации результатов абсолютно одинаков для обоих средств получения данных. Объяснение может быть следующим: нестабильный / недостаточно быстрый интернет, ошибка в коде или данные, полученные из websocket, не совпадают с данными из вызова api. Мое предположение относится к последнему. Я еще не полностью проверил свой код на наличие ошибок.