fix forceful close workflow
This commit is contained in:
@@ -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,13 +442,22 @@ export class WebsocketClient extends EventEmitter {
|
||||
break;
|
||||
|
||||
default:
|
||||
this.logger.error(
|
||||
`${context} due to unexpected response error: "${
|
||||
error?.msg || error?.message || error
|
||||
}"`,
|
||||
{ ...loggerCategory, wsKey, error }
|
||||
);
|
||||
this.executeReconnectableClose(wsKey, 'unhandled onWsError');
|
||||
if (
|
||||
this.wsStore.getConnectionState(wsKey) !==
|
||||
WsConnectionStateEnum.CLOSING
|
||||
) {
|
||||
this.logger.error(
|
||||
`${context} due to unexpected response error: "${
|
||||
error?.msg || error?.message || error
|
||||
}"`,
|
||||
{ ...loggerCategory, wsKey, error }
|
||||
);
|
||||
this.executeReconnectableClose(wsKey, 'unhandled onWsError');
|
||||
} else {
|
||||
this.logger.info(
|
||||
`${wsKey} socket forcefully closed. Will not reconnect.`
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
this.emit('error', error);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user