@@ -43,20 +43,20 @@ function useWebSocket(socketUrl: string, options: Options = {}): Result {
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 > > ( undefined ) ;
53
57
54
58
const websocketRef = useRef < WebSocket > ( undefined ) ;
55
59
56
- const [ latestMessage , setLatestMessage ] = useState < MessageEvent > ( ) ;
57
-
58
- const [ readyState , setReadyState ] = useState < ReadyState > ( ReadyState . Closed ) ;
59
-
60
60
const reconnect = ( ) => {
61
61
if (
62
62
reconnectTimesRef . current < reconnectLimit &&
@@ -125,7 +125,7 @@ function useWebSocket(socketUrl: string, options: Options = {}): Result {
125
125
} ;
126
126
127
127
const sendMessage : WebSocket [ 'send' ] = ( message ) => {
128
- if ( readyState === ReadyState . Open ) {
128
+ if ( readyStateRef . current === ReadyState . Open ) {
129
129
websocketRef . current ?. send ( message ) ;
130
130
} else {
131
131
throw new Error ( 'WebSocket disconnected' ) ;
0 commit comments