diff --git a/packages/hooks/src/useWebSocket/index.ts b/packages/hooks/src/useWebSocket/index.ts index 8260195133..a8c1329ff7 100644 --- a/packages/hooks/src/useWebSocket/index.ts +++ b/packages/hooks/src/useWebSocket/index.ts @@ -43,18 +43,19 @@ export default function useWebSocket(socketUrl: string, options: Options = {}): protocols, } = options; + const [latestMessage, setLatestMessage] = useState(); + const [readyState, setReadyState] = useState(ReadyState.Closed); + const onOpenRef = useLatest(onOpen); const onCloseRef = useLatest(onClose); const onMessageRef = useLatest(onMessage); const onErrorRef = useLatest(onError); + const readyStateRef = useLatest(readyState); const reconnectTimesRef = useRef(0); const reconnectTimerRef = useRef>(); const websocketRef = useRef(); - const [latestMessage, setLatestMessage] = useState(); - const [readyState, setReadyState] = useState(ReadyState.Closed); - const reconnect = () => { if ( reconnectTimesRef.current < reconnectLimit && @@ -123,7 +124,7 @@ export default function useWebSocket(socketUrl: string, options: Options = {}): }; const sendMessage: WebSocket['send'] = (message) => { - if (readyState === ReadyState.Open) { + if (readyStateRef.current === ReadyState.Open) { websocketRef.current?.send(message); } else { throw new Error('WebSocket disconnected');