mirror of
https://github.com/fromchat-messenger/web.git
synced 2026-09-22 19:15:08 +03:00
Add websocket auto reconnect
This commit is contained in:
@@ -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);
|
||||
});
|
||||
Reference in New Issue
Block a user