Last active
March 22, 2020 05:28
-
-
Save Slurpgoose/ab41a4674a7a353b8f68b9d80af2b004 to your computer and use it in GitHub Desktop.
Connect to Coinbase WS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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