()
| 294 | // ── Ping / latency ─────────────────────────────────────────────────────────── |
| 295 | |
| 296 | function startPing(): void { |
| 297 | stopPing() |
| 298 | pingTimer = setInterval(() => { |
| 299 | if (ws?.readyState === WebSocket.OPEN) { |
| 300 | lastPingSent = Date.now() |
| 301 | sendJSON({ type: 'ping' }) |
| 302 | } |
| 303 | }, PING_INTERVAL_MS) |
| 304 | } |
| 305 | |
| 306 | function stopPing(): void { |
| 307 | if (pingTimer) clearInterval(pingTimer) |