Skip to content

Commit aa8235d

Browse files
committed
feat: improve event stream connection logging
1 parent d84b7ab commit aa8235d

File tree

1 file changed

+98
-6
lines changed

1 file changed

+98
-6
lines changed

src/components/eventStream/EventStream.tsx

Lines changed: 98 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,90 @@ import { useIsEventStreamInstalled } from "./useIsEventStreamInstalled";
2424

2525
dayjs.extend(utc);
2626

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+
27111
/**
28112
* Builds WebSocket URL
29113
*/
@@ -80,6 +164,7 @@ export const EventStream = () => {
80164
);
81165

82166
const handleWebSocketOpen = useCallback(() => {
167+
logWebSocketOpen();
83168
enqueueSnackbar("Connected to event stream", {
84169
variant: "success",
85170
anchorOrigin: { horizontal: "right", vertical: "bottom" },
@@ -88,6 +173,8 @@ export const EventStream = () => {
88173

89174
const handleWebSocketClose = useCallback(
90175
(event: CloseEvent) => {
176+
logWebSocketClose(event);
177+
91178
const message = event.wasClean
92179
? "Disconnected from event stream"
93180
: "Event stream disconnected unexpectedly. Attempting to reconnect...";
@@ -100,12 +187,17 @@ export const EventStream = () => {
100187
[enqueueSnackbar],
101188
);
102189

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+
);
109201

110202
// Build WebSocket URL
111203
const wsUrl = eventStreamEnabled && asRole && location ? buildWebSocketUrl(location) : null;

0 commit comments

Comments
 (0)