NodeJS websocket code info for Jorgg

Jorgg, abajo el código que uso para establecer una conexión vía websocket con Bitfinex. Me gustaría describirle los detalles pero creo que con usted no hace falta. Quizás termine detallando puntos que usted sobreentiende. Entonces le dejo a usted, de ser necesario, la apertura sobre los detalles o dudas.

Jorgg, de conversar sobre este código, por favor, apreciaría que use le sección de comentarios de esta página para dejar allí plasmada la conversa Jorgg.

Lo que sí creo importante mencionar es que este código está usando lo que entiendo puede ser «librerías», que bajo el argot de NodeJS se describe como dependencias. En este caso usa una dependencia llamada WebSocket que entiendo es una dependencia estándar para las conexiones websockets usando el servidor Express en NodeJS. También estoy importando un objeto llamado exchangeData, que prácticamente es el objeto matriz donde recolecto la info de todo el código.

import WebSocket from 'ws';
import { exchangesData } from './Objects.js';

export function websocketBitfinex() {

    const connect = () => {

        const wss = new WebSocket('wss://api-pub.bitfinex.com/ws/2');

        wss.onmessage = (msg) => {
            const data = JSON.parse(msg.data);
            if (Array.isArray(data) && data.length > 1 && Array.isArray(data[1])) {//Verifica si es una actualización de datos
                const tickerData = data[1];            
                if (tickerData.length >= 10) {// Verificar si el tickerData contiene los valores bid y ask
                    const bid = tickerData[0];
                    const ask = tickerData[2];
                    // console.log('Bid:', bid);
                    // console.log('Ask:', ask);
                    exchangesData.bitfinex.ask = ask;
                    exchangesData.bitfinex.bid = bid;
                }
            }
        };
        wss.onopen = () => {
            console.log('Bitfinex WebSocket connection established');
            exchangesData.bitfinex.websocketStatus = true;
            const subscriptionMsg = JSON.stringify({
                event: 'subscribe',
                channel: 'ticker',
                symbol: 'tBTCUSD'
            });
            wss.send(subscriptionMsg);
        };
        wss.onerror = (error) => {
            console.error('WebSocket error from Bitfinex:', error);
        };
        wss.onclose = () => {
            console.log('Bitfinex WebSocket connection closed. Reconnecting...');
            exchangesData.bitfinex.websocketStatus = false;
            setTimeout(connect, 30000); // Reconectar después de 5 segundos
        };
    };
    
    connect();

}

Cualquier pregunta, comentario, sugerencia o lo que sea, usa abajo la sección de comentarios Jorgg.

1 comentario en «NodeJS websocket code info for Jorgg»

  1. Zen! Zen! Zen! Agradecido Zen! Agradecido!

    Me funcionó perfecto en mi servidor Node.js

    Sí, usa la librería ws que no viene nativa en Node.js. Se instala con npm:

    https://www.npmjs.com/package/ws

    Y no se limita a Express (mi servidor Node.js no usa Express).

    Sí, noté su objeto exchangeData

    Excelente ejemplo de código. Bastante claro.

    De necesitar ws con otro exchange, sería cuestión de revisar la documentación, aunque yo primero le preguntaría a usted, para no reinventar la rueda!

    Muchas gracias por su aporte Zen! Muchas gracias!

    Responder

Deja un comentario