fix(rnd): Fix JS event-loop freeze caused by websocket connection retry (#7861)

### Background

Websocket connection retry has no backoff period which causes event-loop freeze.

### Changes 🏗️

Add a back-off period on retry.
This commit is contained in:
Zamil Majdy
2024-08-21 16:41:15 +02:00
committed by GitHub
parent 3d62cec553
commit c719e4f177

View File

@@ -227,13 +227,21 @@ export default class AutoGPTServerAPI {
sendWebSocketMessage<M extends keyof WebsocketMessageTypeMap>(
method: M,
data: WebsocketMessageTypeMap[M],
callCount = 0,
) {
if (this.webSocket && this.webSocket.readyState === WebSocket.OPEN) {
this.webSocket.send(JSON.stringify({ method, data }));
} else {
this.connectWebSocket().then(() =>
this.sendWebSocketMessage(method, data),
);
this.connectWebSocket().then(() => {
callCount == 0
? this.sendWebSocketMessage(method, data, callCount + 1)
: setTimeout(
() => {
this.sendWebSocketMessage(method, data, callCount + 1);
},
2 ** (callCount - 1) * 1000,
);
});
}
}