Sample code for 30+ languages & platforms
Node.js

WebSocket Binance Trade Stream (subscribe and receive updates)

See more WebSocket Examples

Subscribe to a binance trade stream and receive 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 wss://stream.binance.com:9443
    success = rest.Connect("stream.binance.com",9443,true,false);
    if (success == false) {
        console.log(rest.LastErrorText);
        return;
    }

    success = ws.UseConnection(rest);
    if (success == false) {
        console.log(ws.LastErrorText);
        return;
    }

    ws.AddClientHeaders();

    //   Raw streams are accessed at /ws/<streamName>
    var responseBody = rest.FullRequestNoBody("GET","/ws/btcusdt");
    if (rest.LastMethodSuccess == false) {
        console.log(rest.LastErrorText);
        return;
    }

    success = ws.ValidateServerHandshake();
    if (success !== true) {
        console.log(ws.LastErrorText);
        console.log(responseBody);
        console.log(rest.ResponseHeader);
        return;
    }

    console.log(responseBody);
    console.log(rest.ResponseHeader);

    //  POST JSON to subscribe to a stream

    //  {
    //  "method": "SUBSCRIBE",
    //  "params":
    //  [
    //  "btcusdt@aggTrade",
    //  "btcusdt@depth"
    //  ],
    //  "id": 1
    //  }

    var json = new chilkat.JsonObject();
    json.UpdateString("method","SUBSCRIBE");
    json.UpdateString("params[0]","btcusdt@aggTrade");
    json.UpdateString("params[1]","btcusdt@depth");
    json.UpdateInt("id",1);

    //  Send a full message in a single frame
    var finalFrame = true;
    success = ws.SendFrame(json.Emit(),finalFrame);
    if (success !== true) {
        console.log(ws.LastErrorText);
        return;
    }

    var jsonTradeData = new chilkat.JsonObject();
    jsonTradeData.EmitCompact = false;

    //  Begin reading the trade stream response.
    //  We'll just read the 1st 10 updates and then exit..
    var receivedFinalFrame = false;
    var numTradesReceived = 0;
    while (numTradesReceived < 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 receivedJson = ws.GetFrameData();

            jsonTradeData.Load(receivedJson);
            console.log(jsonTradeData.Emit());

            numTradesReceived = numTradesReceived+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.");

    //  The output of the above code is shown here:

}

chilkatExample();