Sample code for 30+ languages & platforms
Node.js

Read Bitfinex WebSocket Ticker Channel

See more WebSocket Examples

Subscribes to the public Bitfinex websocket ticker channel and receives ticker updates.

Chilkat Node.js Downloads

Node.js
NODEJS_PRELUDE

function chilkatExample() {

    var success = false;

    //  This example requires the Chilkat API to have been previously unlocked.
    //  See Global Unlock Sample for sample code.

    var ws = new chilkat.WebSocket();

    //  For brevity, this example does not check for errors when etablishing the WebSocket connection.
    //  See Establish WebSocket Connection for more complete sample code for making the connection.

    var rest = new chilkat.Rest();

    //  Connect to api.bitfinex.com
    success = rest.Connect("api.bitfinex.com",443,true,false);
    ws.UseConnection(rest);
    ws.AddClientHeaders();

    var responseBody = rest.FullRequestNoBody("GET","/ws");
    success = ws.ValidateServerHandshake();
    if (success !== true) {
        console.log(ws.LastErrorText);
        console.log(responseBody);
        console.log(rest.ResponseHeader);
        return;
    }

    //  After connecting, the bitfinex websocket server will send
    //  an info message that contains the actual version of the websocket stream.
    //  Receive that message..
    success = ws.ReadFrame();
    if (success !== true) {
        console.log("Failed to receive a frame");
        console.log("ReadFrame fail reason = " + ws.ReadFrameFailReason);
        console.log(ws.LastErrorText);
        return;
    }

    //  We should get this:
    //  {"event":"info","version":1.1,"platform":{"status":1}}
    console.log(ws.GetFrameData());

    //  Subscribe to the public ticker feed.
    //  See https://docs.bitfinex.com/docs for more information.
    var json = new chilkat.JsonObject();
    json.AppendString("event","subscribe");
    json.AppendString("channel","ticker");
    json.AppendString("pair","BTCUSD");

    var finalFrame = true;
    success = ws.SendFrame(json.Emit(),finalFrame);

    //  Read the response.
    success = ws.ReadFrame();
    if (success !== true) {
        console.log("Failed to receive a frame");
        console.log("ReadFrame fail reason = " + ws.ReadFrameFailReason);
        console.log(ws.LastErrorText);
        return;
    }

    //  Examine the response
    //  We should get this:
    //  {"event":"subscribed","channel":"ticker","chanId":2751,"pair":"BTCUSD"}
    console.log(ws.GetFrameData());

    //  Begin reading the ticker feed.
    //  We'll just read the 1st 5 updates and then exit..
    var receivedFinalFrame = false;
    var numUpdatesReceived = 0;
    while (numUpdatesReceived < 5) {

        success = ws.ReadFrame();
        if (success !== true) {
            console.log("Failed to receive a frame");
            console.log("ReadFrame fail reason = " + ws.ReadFrameFailReason);
            console.log(ws.LastErrorText);
            return;
        }

        //  The responses we desire are in Text frames, where the opcode = 1.
        if (ws.FrameOpcodeInt == 1) {
            var receivedText = ws.GetFrameData();
            console.log(receivedText);
            //  Should receive a line of text such as this:
            //  [2751,7349,36.34269559,7349.1,41.01777063,-116.2,-0.0156,7349.1,22188.26055319,7560,7270.5]
            numUpdatesReceived = numUpdatesReceived+1;
        }

    }

    //  Close the websocket connection.
    success = ws.SendClose(true,1000,"Closing this websocket.");
    if (success !== true) {
        console.log(ws.LastErrorText);
        return;
    }

    //  Read the Close response.
    success = ws.ReadFrame();
    if (success !== true) {
        console.log("ReadFrame fail reason = " + ws.ReadFrameFailReason);
        console.log(ws.LastErrorText);
        return;
    }

    console.log("Success.");

}

chilkatExample();