diff options
| author | Adam Soltys <[email protected]> | 2023-02-01 16:19:12 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2023-02-01 16:19:12 -0800 |
| commit | f07883cdae6da45b063c3b17843c75abf8128e4e (patch) | |
| tree | 7024521112f5faa0aa3ff67d29c380626ef3a445 /lib | |
| parent | fe0455ffe2d93eda5792ec1ef38348ef24aba2aa (diff) | |
| download | coinos-server-f07883cdae6da45b063c3b17843c75abf8128e4e.tar.gz coinos-server-f07883cdae6da45b063c3b17843c75abf8128e4e.zip | |
socket reconnect logic
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/rates.js | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/rates.js b/lib/rates.js index 45c5977a..362aaa98 100644 --- a/lib/rates.js +++ b/lib/rates.js @@ -1,14 +1,18 @@ import got from "got"; import config from "$config"; -import { broadcast } from "./sockets"; -import store from "./store"; +import { broadcast } from "$lib/sockets"; +import store from "$lib/store"; import { err, warn } from "$lib/logging"; import { g, s } from "$lib/db"; +import { sleep } from "$lib/utils"; import WebSocket from "ws"; +let last; let ws; -let connect = () => { - if (ws) ws.terminate(); +let connect = async () => { + if (ws && ws.readyState === 1 && Date.now() - last < 5000) return; + if (ws) ws.terminate() && (await sleep(Math.round(Math.random() * 1000))); + ws = new WebSocket("wss://stream.binance.com:9443/ws/btcusdt@ticker"); ws.onmessage = async function(event) { @@ -20,6 +24,7 @@ let connect = () => { }); store.last = msg.c; + last = Date.now(); } catch (e) { console.log(e); err("binance message error", e.message); @@ -30,7 +35,6 @@ let connect = () => { err("binance socket error", error.message); }; - setTimeout(connect, 360000); return ws; }; @@ -57,5 +61,5 @@ export let getRates = async () => { store.fx = fx; - setTimeout(getRates, 7200000); + setTimeout(getRates, 30000); }; |
