diff options
author | Brian Picciano <mediocregopher@gmail.com> | 2022-05-20 13:37:43 -0600 |
---|---|---|
committer | Brian Picciano <mediocregopher@gmail.com> | 2022-05-20 13:37:43 -0600 |
commit | 16cfbd19157df76e7296dddb287412f1099feb33 (patch) | |
tree | e4bbf892066cceeaeeaee4c25e5365152412a1c3 /srv/src/http/static/trading-in-the-rain/CW.js | |
parent | 3cdee89c961ae9c836234f5aec87174a04a800a8 (diff) |
Move static assets to within srv
Diffstat (limited to 'srv/src/http/static/trading-in-the-rain/CW.js')
-rw-r--r-- | srv/src/http/static/trading-in-the-rain/CW.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/srv/src/http/static/trading-in-the-rain/CW.js b/srv/src/http/static/trading-in-the-rain/CW.js new file mode 100644 index 0000000..043c1a8 --- /dev/null +++ b/srv/src/http/static/trading-in-the-rain/CW.js @@ -0,0 +1,43 @@ +function CW(resource) { + this.conn = new WebSocket('wss://stream.cryptowat.ch/connect?apikey=GPDLXH702E1NAD96OSBO'); + this.conn.binaryType = "arraybuffer"; + + this.conn.onopen = () => { + console.log("CW websocket connected"); + if (this.onconnect) this.onconnect(); + } + + let decoder = new TextDecoder(); + this.conn.onmessage = (msg) => { + let d = JSON.parse(decoder.decode(msg.data)); + + // The server will always send an AUTHENTICATED signal when you establish a valid connection + // At this point you can subscribe to resources + if (d.authenticationResult && d.authenticationResult.status === 'AUTHENTICATED') { + if (this.onauth) this.onauth(); + this.conn.send(JSON.stringify({ + subscribe: { + subscriptions: [ + {streamSubscription: {resource: resource}}, + ], + } + })); + return; + } + + // Market data comes in a marketUpdate + // In this case, we're expecting trades so we look for marketUpdate.tradesUpdate + if (!d.marketUpdate || !d.marketUpdate.tradesUpdate) { + return; + } + + let trades = d.marketUpdate.tradesUpdate.trades; + for (let i in trades) { + trades[i].price = parseFloat(trades[i].priceStr); + trades[i].volume = parseFloat(trades[i].amountStr); + } + if (this.ontrades) this.ontrades(trades); + } + + this.close = () => this.conn.close(); +} |