From c066bfa46e52e4870269aed285cc357e09aea864 Mon Sep 17 00:00:00 2001 From: Nasar Eddaoui Date: Sat, 4 May 2024 11:23:32 +0700 Subject: [PATCH] add reconnection strategy --- app/components/socket.tsx | 17 +++----- app/hook/socketHook.tsx | 16 ++++++++ app/lib/websocket/socket.ts | 51 ++--------------------- app/lib/websocket/websocket.ts | 75 ++++++++++++++++++++++++++++++++++ app/model/websocket.ts | 22 ++++++++-- 5 files changed, 119 insertions(+), 62 deletions(-) create mode 100644 app/hook/socketHook.tsx create mode 100644 app/lib/websocket/websocket.ts diff --git a/app/components/socket.tsx b/app/components/socket.tsx index 897a49d..29f5b87 100644 --- a/app/components/socket.tsx +++ b/app/components/socket.tsx @@ -1,29 +1,24 @@ 'use client'; -import React, { useEffect, useState } from 'react'; -import { Websocket } from '../lib/websocket/socket'; -import { ConState, ISocket } from '../model/websocket'; +import React from 'react'; +import { CloseEvent, ConState } from '../model/websocket'; +import WebSocketHook from '../hook/socketHook'; type Url = { url: string; online: boolean; state: ConState }; export default function Socket({ url, online, state }: Url): React.JSX.Element { - const [socket, setSocket] = useState(); + const [socket] = WebSocketHook({ state: state }); const start = () => { try { if (!socket?.Alive()) { - socket?.Start(url, state); - setSocket(socket); - } else socket?.Stop(1000); + socket?.Connect(url, state); + } else socket?.Disconnect(CloseEvent.NORMAL); } catch (err) { console.error(err); } }; - useEffect(() => { - setSocket(new Websocket(state)); - }, []); - return (