Skip to content

Instantly share code, notes, and snippets.

@Slurpgoose
Last active March 22, 2020 05:28
Show Gist options
  • Save Slurpgoose/ab41a4674a7a353b8f68b9d80af2b004 to your computer and use it in GitHub Desktop.
Save Slurpgoose/ab41a4674a7a353b8f68b9d80af2b004 to your computer and use it in GitHub Desktop.
Connect to Coinbase WS
const CoinbasePro = require('coinbase-pro');
const subscriptions = ['BTC-USD', 'ETH-EUR'];
let groups = {};
let beat = {};
startCoinbaseSocket = (subscriptions, groupid) => {
let websocket = new CoinbasePro.WebsocketClient(
subscriptions,
'wss://ws-feed.pro.coinbase.com',
{
key: '*',
secret: '*',
passphrase: '*',
},
{ channels: ['full', 'level2', 'ticker'] });
websocket.on('message', data => {
handleMessage(data);
});
websocket.on('error', (err) => {
console.log(err)
});
websocket.on('close', (data) => {
console.log(`Websocket Error: websocket closed unexpectedly with data: ${data}. Attempting to re-connect.`);
groups[groupid] = {
...groups[groupid],
client: startCoinbaseSocket(subscriptions, groupid),
launchTime: getTime(),
}
});
return websocket
handleMessage = (msg) => {
switch(msg.type) {
case 'l2update':
break;
case 'ticker':
let lastRecord = getTime();
updateTicker(msg);
beats[msg.product_id] = msg.sequence;
break;
default:
beat[msg.product_id] = msg.sequence;
break;
}
}
groups[1] = {
client: startCoinbaseSocket(subscriptions, 1),
launchTime: getTime(),
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment