Skip to main content
This example uses the popular ws library to connect to the WebSocket API. Node.js environments allow passing custom headers, which is the preferred method for authentication.

Full Example

client.js
var WebSocketClient = require('websocket').client;

var client = new WebSocketClient();

var start_time,
    mapping,
    order,
    time_mult,
    pairs = ['EURUSD', 'GBPCHF'];

function unpackInit(data) {
    var meta = JSON.parse(data);
    start_time = meta['start_time'];
    mapping = meta['mapping'];
    order = meta['order'];
    time_mult = meta['time_mult'];
    return meta;
};

function unpackErrPair(data) {
    return JSON.parse(data);
};

function unpackData(data) {
    var inc = data.split('|');
    var out = {};
    for (var i in order) {
        out[order[i]] = inc[i];
    };
    out["name"] = mapping[out["name"]];
    out["time"] = parseFloat(out["time"]) / time_mult;
    out["time"] += start_time;
    return out;
};

function pack(data) {
    return JSON.stringify(data);
};

function processMessage(data) {
    var t = data.substring(0, 1);
    var msg = data.substring(1);
    var inc_data = null;
    switch (t) {
    case '0':
        inc_data = unpackInit(msg);
        break;
    case '7':
    case '8':
    case '9':
        inc_data = unpackErrPair(msg);
        break;
    case '1':
        inc_data = unpackData(msg);
        break;
    case '2':
        inc_data = "";
        break
    default:
        break;
    }
    if(inc_data != null) {
        try {
            console.log(JSON.stringify(inc_data));
        } catch (e) {
            console.log(inc_data);
        }
    } else {
        console.log('Error:' + error);
    }
}

client.on('connectFailed', function(error) {
    console.log('Connect Error: ' + error.toString());
});

client.on('connect', function(connection) {

    connection.sendUTF(pack({"pairs": pairs}));

    connection.on('error', function(error) {
        console.log("Connection Error: " + error.toString());
    });

    connection.on('message', function(message) {
        processMessage(message.utf8Data)
    });
});

client.connect('wss://api.xchangeapi.com/websocket/live?api-key=<YOUR_API_KEY>');

Running Locally

To run this example on your machine:
  1. Create a new folder for the project:
    mkdir websocket-node-example
    cd websocket-node-example
    
  2. Download the example file:
    curl -O https://xchangeapi.com/docs/websocket/example-implementation/node/client.js
    
  3. Install the required dependency:
    npm install websocket
    
  4. Open client.js in your text editor and replace <YOUR_API_KEY> with your actual API key. For more details on API keys, see the Authentication page.
  5. Run the example:
    node client.js