@@ -43,18 +43,19 @@ export default function useWebSocket(socketUrl: string, options: Options = {}):
43
43
protocols,
44
44
} = options ;
45
45
46
+ const [ latestMessage , setLatestMessage ] = useState < WebSocketEventMap [ 'message' ] > ( ) ;
47
+ const [ readyState , setReadyState ] = useState < ReadyState > ( ReadyState . Closed ) ;
48
+
46
49
const onOpenRef = useLatest ( onOpen ) ;
47
50
const onCloseRef = useLatest ( onClose ) ;
48
51
const onMessageRef = useLatest ( onMessage ) ;
49
52
const onErrorRef = useLatest ( onError ) ;
53
+ const readyStateRef = useLatest ( readyState ) ;
50
54
51
55
const reconnectTimesRef = useRef ( 0 ) ;
52
56
const reconnectTimerRef = useRef < ReturnType < typeof setTimeout > > ( ) ;
53
57
const websocketRef = useRef < WebSocket > ( ) ;
54
58
55
- const [ latestMessage , setLatestMessage ] = useState < WebSocketEventMap [ 'message' ] > ( ) ;
56
- const [ readyState , setReadyState ] = useState < ReadyState > ( ReadyState . Closed ) ;
57
-
58
59
const reconnect = ( ) => {
59
60
if (
60
61
reconnectTimesRef . current < reconnectLimit &&
@@ -123,7 +124,7 @@ export default function useWebSocket(socketUrl: string, options: Options = {}):
123
124
} ;
124
125
125
126
const sendMessage : WebSocket [ 'send' ] = ( message ) => {
126
- if ( readyState === ReadyState . Open ) {
127
+ if ( readyStateRef . current === ReadyState . Open ) {
127
128
websocketRef . current ?. send ( message ) ;
128
129
} else {
129
130
throw new Error ( 'WebSocket disconnected' ) ;
0 commit comments