Skip to content

Commit d6c2d2b

Browse files
committed
Improve WebSocket state handling in camera preview
1 parent 6b7afa6 commit d6c2d2b

1 file changed

Lines changed: 16 additions & 3 deletions

File tree

apps/desktop/src/routes/target-select-overlay.tsx

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,16 +1066,29 @@ function CameraPreviewInline() {
10661066
};
10671067

10681068
createEffect(() => {
1069+
if (reconnectTimeoutId !== undefined) {
1070+
clearTimeout(reconnectTimeoutId);
1071+
reconnectTimeoutId = undefined;
1072+
}
1073+
10691074
if (hasCameraSelected()) {
1070-
if (!ws || ws.readyState === WebSocket.CLOSED) {
1075+
if (
1076+
!ws ||
1077+
ws.readyState === WebSocket.CLOSED ||
1078+
ws.readyState === WebSocket.CLOSING
1079+
) {
10711080
resetBackoff();
10721081
ws = createSocket();
10731082
}
10741083
} else {
1075-
if (ws) {
1084+
if (
1085+
ws &&
1086+
ws.readyState !== WebSocket.CLOSING &&
1087+
ws.readyState !== WebSocket.CLOSED
1088+
) {
10761089
ws.close();
1077-
ws = undefined;
10781090
}
1091+
ws = undefined;
10791092
setFrame(null);
10801093
setConnectionFailed(false);
10811094
}

0 commit comments

Comments
 (0)