Binance API Как подключиться к веб-сокету с помощью Javascript?

#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. Мое предположение относится к последнему. Я еще не полностью проверил свой код на наличие ошибок.