@@ -24,6 +24,90 @@ import { useIsEventStreamInstalled } from "./useIsEventStreamInstalled";
24
24
25
25
dayjs . extend ( utc ) ;
26
26
27
+ /**
28
+ * Logs WebSocket connection open event
29
+ */
30
+ const logWebSocketOpen = ( ) => {
31
+ console . log ( "[EventStream] WebSocket connection opened successfully" ) ;
32
+ } ;
33
+
34
+ /**
35
+ * Logs detailed WebSocket close event information
36
+ */
37
+ const logWebSocketClose = ( event : CloseEvent ) => {
38
+ const closeInfo = {
39
+ code : event . code ,
40
+ reason : event . reason || "No reason provided" ,
41
+ wasClean : event . wasClean ,
42
+ timestamp : new Date ( ) . toISOString ( ) ,
43
+ } ;
44
+
45
+ console . log ( "[EventStream] WebSocket connection closed:" , closeInfo ) ;
46
+
47
+ // Log specific close codes for debugging
48
+ switch ( event . code ) {
49
+ case 1000 :
50
+ console . log ( "[EventStream] Normal closure - connection completed successfully" ) ;
51
+ break ;
52
+ case 1001 :
53
+ console . log ( "[EventStream] Going away - server is shutting down or client navigating away" ) ;
54
+ break ;
55
+ case 1002 :
56
+ console . log ( "[EventStream] Protocol error - invalid data received" ) ;
57
+ break ;
58
+ case 1003 :
59
+ console . log ( "[EventStream] Unsupported data - received data type not supported" ) ;
60
+ break ;
61
+ case 1005 :
62
+ console . log ( "[EventStream] No status received - no close code provided" ) ;
63
+ break ;
64
+ case 1006 :
65
+ console . log ( "[EventStream] Abnormal closure - connection lost without close frame" ) ;
66
+ break ;
67
+ case 1007 :
68
+ console . log ( "[EventStream] Invalid frame payload data - received inconsistent data" ) ;
69
+ break ;
70
+ case 1008 :
71
+ console . log ( "[EventStream] Policy violation - message violates server policy" ) ;
72
+ break ;
73
+ case 1009 :
74
+ console . log ( "[EventStream] Message too big - message exceeds size limit" ) ;
75
+ break ;
76
+ case 1010 :
77
+ console . log ( "[EventStream] Client error - client terminated connection" ) ;
78
+ break ;
79
+ case 1011 :
80
+ console . log ( "[EventStream] Server error - server encountered error" ) ;
81
+ break ;
82
+ case 1012 :
83
+ console . log ( "[EventStream] Service restart - server restarting" ) ;
84
+ break ;
85
+ case 1013 :
86
+ console . log ( "[EventStream] Try again later - temporary server condition" ) ;
87
+ break ;
88
+ case 1014 :
89
+ console . log ( "[EventStream] Bad gateway - invalid response from upstream" ) ;
90
+ break ;
91
+ case 1015 :
92
+ console . log ( "[EventStream] TLS handshake - TLS handshake failed" ) ;
93
+ break ;
94
+ default :
95
+ console . log ( `[EventStream] Unknown close code: ${ event . code } ` ) ;
96
+ }
97
+ } ;
98
+
99
+ /**
100
+ * Logs WebSocket error event details
101
+ */
102
+ const logWebSocketError = ( error : Event ) => {
103
+ console . error ( "[EventStream] WebSocket connection error:" , error ) ;
104
+ console . error ( "[EventStream] Error details:" , {
105
+ type : error . type ,
106
+ target : error . target ,
107
+ timestamp : new Date ( ) . toISOString ( ) ,
108
+ } ) ;
109
+ } ;
110
+
27
111
/**
28
112
* Builds WebSocket URL
29
113
*/
@@ -80,6 +164,7 @@ export const EventStream = () => {
80
164
) ;
81
165
82
166
const handleWebSocketOpen = useCallback ( ( ) => {
167
+ logWebSocketOpen ( ) ;
83
168
enqueueSnackbar ( "Connected to event stream" , {
84
169
variant : "success" ,
85
170
anchorOrigin : { horizontal : "right" , vertical : "bottom" } ,
@@ -88,6 +173,8 @@ export const EventStream = () => {
88
173
89
174
const handleWebSocketClose = useCallback (
90
175
( event : CloseEvent ) => {
176
+ logWebSocketClose ( event ) ;
177
+
91
178
const message = event . wasClean
92
179
? "Disconnected from event stream"
93
180
: "Event stream disconnected unexpectedly. Attempting to reconnect..." ;
@@ -100,12 +187,17 @@ export const EventStream = () => {
100
187
[ enqueueSnackbar ] ,
101
188
) ;
102
189
103
- const handleWebSocketError = useCallback ( ( ) => {
104
- enqueueSnackbar ( "Event stream connection error. Reconnection attempts may follow." , {
105
- variant : "error" ,
106
- anchorOrigin : { horizontal : "right" , vertical : "bottom" } ,
107
- } ) ;
108
- } , [ enqueueSnackbar ] ) ;
190
+ const handleWebSocketError = useCallback (
191
+ ( error : Event ) => {
192
+ logWebSocketError ( error ) ;
193
+
194
+ enqueueSnackbar ( "Event stream connection error. Reconnection attempts may follow." , {
195
+ variant : "error" ,
196
+ anchorOrigin : { horizontal : "right" , vertical : "bottom" } ,
197
+ } ) ;
198
+ } ,
199
+ [ enqueueSnackbar ] ,
200
+ ) ;
109
201
110
202
// Build WebSocket URL
111
203
const wsUrl = eventStreamEnabled && asRole && location ? buildWebSocketUrl ( location ) : null ;
0 commit comments