Browse Source

fix: #4158 allow reconnection when websocket is closed

log reconnection attempts
mark session_id as mandatory on client-side
Sylvere Richard 9 months ago
parent
commit
2fb4d3356c
2 changed files with 20 additions and 0 deletions
  1. 1 0
      src/lib/apis/index.ts
  2. 19 0
      src/routes/+layout.svelte

+ 1 - 0
src/lib/apis/index.ts

@@ -69,6 +69,7 @@ type ChatCompletedForm = {
 	model: string;
 	messages: string[];
 	chat_id: string;
+	session_id: string;
 };
 
 export const chatCompleted = async (token: string, body: ChatCompletedForm) => {

+ 19 - 0
src/routes/+layout.svelte

@@ -111,6 +111,10 @@
 
 			if ($config) {
 				const _socket = io(`${WEBUI_BASE_URL}` || undefined, {
+					reconnection: true,
+					reconnectionDelay: 1000,
+					reconnectionDelayMax: 5000,
+					randomizationFactor: 0.5
 					path: '/ws/socket.io',
 					auth: { token: localStorage.token }
 				});
@@ -119,6 +123,21 @@
 					console.log('connected');
 				});
 
+				_socket.on("reconnect_attempt", (attempt) => {
+					console.log('reconnect_attempt', attempt);
+				});
+
+				_socket.on("reconnect_failed", () => {
+					console.log('reconnect_failed');
+				});
+
+				_socket.on("disconnect", (reason, details) => {
+					console.log(`Socket ${socket.id} disconnected due to ${reason}`);
+					if (details) {
+						console.log('Additional details:', details);
+					}
+				});
+
 				await socket.set(_socket);
 
 				_socket.on('user-count', (data) => {