Skip to content

Commit 66c4d31

Browse files
committed
Better websocket error handling for react-native.
1 parent 5203ddf commit 66c4d31

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

packages/common/src/client/sync/stream/WebsocketClientTransport.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,17 @@ export class WebsocketClientTransport implements ClientTransport {
4444

4545
const errorListener = (ev: ErrorEvent) => {
4646
removeListeners();
47-
// ev.error is often undefined, especially on React Native and Web.
4847
// We add a default error in that case.
49-
const error = ev.error ?? new Error(`Failed to create connection to websocket: ${this.url}`);
50-
reject(error);
48+
if (ev.error != null) {
49+
// undici typically provides an error object
50+
reject(ev.error);
51+
} else if (ev.message != null) {
52+
// React Native typically does not provide an error object, but does provide a message
53+
reject(new Error(`Failed to create websocket connection: ${ev.message}`));
54+
} else {
55+
// Browsers often provide no details at all
56+
reject(new Error(`Failed to create websocket connection to ${this.url}`));
57+
}
5158
};
5259

5360
/**

0 commit comments

Comments
 (0)