Mark offline if websocket connection attempt times out

Co-authored-by: trevor-signal <131492920+trevor-signal@users.noreply.github.com>
This commit is contained in:
automated-signal
2024-05-07 13:21:32 -05:00
committed by GitHub
parent 26196bdf0c
commit c87dc50697

View File

@@ -36,7 +36,7 @@ import WebSocketResource, {
TransportOption,
WebSocketResourceWithShadowing,
} from './WebsocketResources';
import { HTTPError } from './Errors';
import { ConnectTimeoutError, HTTPError } from './Errors';
import type { IRequestHandler, WebAPICredentials } from './Types.d';
import { connect as connectWebSocket } from './WebSocket';
import { isAlpha, isBeta, isStaging } from '../util/version';
@@ -117,6 +117,13 @@ export class SocketManager extends EventListener {
return this.status;
}
private markOffline() {
if (this.privIsOnline !== false) {
this.privIsOnline = false;
this.emit('offline');
}
}
// Update WebAPICredentials and reconnect authenticated resource if
// credentials changed
public async authenticate(credentials: WebAPICredentials): Promise<void> {
@@ -257,10 +264,11 @@ export class SocketManager extends EventListener {
return;
}
if (code === -1 && this.privIsOnline !== false) {
this.privIsOnline = false;
this.emit('offline');
if (code === -1) {
this.markOffline();
}
} else if (error instanceof ConnectTimeoutError) {
this.markOffline();
}
drop(reconnect());