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>');