fix forceful close workflow

This commit is contained in:
tiagosiebler
2022-11-12 17:56:52 +00:00
parent ba7099d11c
commit d3b2c65c22
3 changed files with 21 additions and 11 deletions

View File

@@ -276,6 +276,7 @@ export class WebsocketClient extends EventEmitter {
public closeAll(force?: boolean) {
const keys = this.wsStore.getKeys();
this.logger.info(`Closing all ws connections: ${keys}`);
keys.forEach((key) => {
this.close(key, force);
});
@@ -441,6 +442,10 @@ export class WebsocketClient extends EventEmitter {
break;
default:
if (
this.wsStore.getConnectionState(wsKey) !==
WsConnectionStateEnum.CLOSING
) {
this.logger.error(
`${context} due to unexpected response error: "${
error?.msg || error?.message || error
@@ -448,6 +453,11 @@ export class WebsocketClient extends EventEmitter {
{ ...loggerCategory, wsKey, error }
);
this.executeReconnectableClose(wsKey, 'unhandled onWsError');
} else {
this.logger.info(
`${wsKey} socket forcefully closed. Will not reconnect.`
);
}
break;
}
this.emit('error', error);

View File

@@ -9,6 +9,7 @@ import {
getSilentLogger,
waitForSocketEvent,
WS_OPEN_EVENT_PARTIAL,
fullLogger,
} from '../ws.util';
describe('Private Spot V1 Websocket Client', () => {
@@ -30,6 +31,7 @@ describe('Private Spot V1 Websocket Client', () => {
beforeAll(() => {
wsClient = new WebsocketClient(
wsClientOptions,
// fullLogger
getSilentLogger('expectSuccess')
);
logAllEvents(wsClient);

View File

@@ -28,10 +28,6 @@ describe('Public Unified Margin Websocket Client (Perps - USDC)', () => {
wsClient.connectPublic();
});
afterAll(() => {
wsClient.closeAll(true);
});
it('should open a public ws connection', async () => {
const wsOpenPromise = waitForSocketEvent(wsClient, 'open');
try {
@@ -42,6 +38,8 @@ describe('Public Unified Margin Websocket Client (Perps - USDC)', () => {
} catch (e) {
expect(e).toBeFalsy();
}
wsClient.closeAll(true);
});
// TODO: are there USDC topics? This doesn't seem to work