#!/usr/bin/env -S deno run -A const encoder = new TextEncoder(); const decoder = new TextDecoder(); function encode(str: string) { return encoder.encode(str); } function decode(buf: Uint8Array) { return decoder.decode(buf); } // const ws = new WebSocket("wss://telemetry.rs/feed"); const ws = new WebSocket("wss://telemetry-backend.gear-tech.io/feed"); ws.binaryType = "arraybuffer"; ws.onopen = async () => { // console.log("WebSocket connection established"); // ws.send(encode("subscribe:0xfe1b4c55fd4d668101126434206571a7838a8b6b93a6d1b95d607e78e6c53763")); ws.send( encode( "subscribe:0x92ed36f0a4a26169cba7c6990d51055c76b6b89de268568615a041eebb619a0e", ), ); for (let i = 1; i++; true) { ws.send(encode(`ping:${i}`)); // console.log(`ping:${i}`); await new Promise((resolve) => setTimeout(resolve, 1000)); } }; let total = 0; let countingBegin = false; let countingEnd = false; ws.onmessage = (event) => { if (countingEnd) { console.log(total); Deno.exit(0); } // console.log(event); let ev = JSON.parse(decode(event.data)); // console.log(ev); let evid = ev[0]; if (evid === 3) { if (!countingBegin) countingBegin = true; let len = ev.length / 4; total += len; // console.log(total, "nodes found"); } else { if (countingBegin) { countingEnd = true; } } // console.log(`Received message:`, evid); }; ws.onerror = (error) => { console.error(`WebSocket error: ${error}`); }; ws.onclose = (event) => { console.log(`WebSocket connection closed: ${event.code} ${event.reason}`); };