@@ -43,20 +43,20 @@ function useWebSocket(socketUrl: string, options: Options = {}): Result {
4343 protocols,
4444 } = options ;
4545
46+ const [ latestMessage , setLatestMessage ] = useState < WebSocketEventMap [ 'message' ] > ( ) ;
47+ const [ readyState , setReadyState ] = useState < ReadyState > ( ReadyState . Closed ) ;
48+
4649 const onOpenRef = useLatest ( onOpen ) ;
4750 const onCloseRef = useLatest ( onClose ) ;
4851 const onMessageRef = useLatest ( onMessage ) ;
4952 const onErrorRef = useLatest ( onError ) ;
53+ const readyStateRef = useLatest ( readyState ) ;
5054
5155 const reconnectTimesRef = useRef ( 0 ) ;
5256 const reconnectTimerRef = useRef < ReturnType < typeof setTimeout > > ( undefined ) ;
5357
5458 const websocketRef = useRef < WebSocket > ( undefined ) ;
5559
56- const [ latestMessage , setLatestMessage ] = useState < MessageEvent > ( ) ;
57-
58- const [ readyState , setReadyState ] = useState < ReadyState > ( ReadyState . Closed ) ;
59-
6060 const reconnect = ( ) => {
6161 if (
6262 reconnectTimesRef . current < reconnectLimit &&
@@ -125,7 +125,7 @@ function useWebSocket(socketUrl: string, options: Options = {}): Result {
125125 } ;
126126
127127 const sendMessage : WebSocket [ 'send' ] = ( message ) => {
128- if ( readyState === ReadyState . Open ) {
128+ if ( readyStateRef . current === ReadyState . Open ) {
129129 websocketRef . current ?. send ( message ) ;
130130 } else {
131131 throw new Error ( 'WebSocket disconnected' ) ;
0 commit comments