Add websocket auto reconnect

This commit is contained in:
2025-08-21 17:59:14 +03:00
Unverified
parent fe47f8b836
commit fed47f0771
2 changed files with 23 additions and 1 deletions
+19 -1
View File
@@ -2,9 +2,13 @@ import { currentUser } from "./auth";
import { addMessage } from "./chat";
import { API_FULL_BASE_URL } from "./config";
import type { WebSocketMessage, Message } from "./types";
import { delay } from "./utils";
function create() {
return new WebSocket(`ws://${API_FULL_BASE_URL}/chat/ws`);
}
export const websocket = new WebSocket(`ws://${API_FULL_BASE_URL}/chat/ws`);
export let websocket = create();
// --------------
// Initialization
@@ -19,4 +23,18 @@ websocket.addEventListener("message", (e) => {
break;
}
}
});
websocket.addEventListener("error", async () => {
console.warn("WebSocket disconnected, retrying in 3 seconds...");
await delay(3000);
websocket = create();
let listener: () => void | null;
listener = () => {
console.log("WebSocket successfully reconnected!");
websocket.removeEventListener("open", listener);
}
websocket.addEventListener("open", listener);
});