const channels = new Set(["ticker:BTCUSDT", "kline:BTCUSDT:1m"]);
let attempt = 0;
let socket: WebSocket | undefined;
function connect() {
socket = new WebSocket("wss://ws.poolthewool.com/ws");
socket.addEventListener("open", () => {
attempt = 0;
for (const channel of channels) {
socket?.send(
JSON.stringify({
type: "subscribe",
channel,
id: Date.now(),
})
);
}
});
socket.addEventListener("close", () => {
const baseDelay = Math.min(30000, 1000 * 2 ** attempt++);
const jitter = Math.floor(Math.random() * 500);
window.setTimeout(connect, baseDelay + jitter);
});
}
connect();