cleaning around reconnect workflow

This commit is contained in:
tiagosiebler
2022-09-17 10:56:39 +01:00
parent 4eca5fb180
commit 4ccaf853b6
2 changed files with 42 additions and 21 deletions

View File

@@ -6,35 +6,41 @@ import { DefaultLogger, WS_KEY_MAP, WebsocketClient } from '../src';
(async () => {
const logger = {
...DefaultLogger,
// silly: () => {},
silly: (...params) => console.log('silly', ...params),
};
const wsClient = new WebsocketClient(
{
// key: key,
// secret: secret,
// market: 'linear',
// market: 'inverse',
market: 'linear',
// market: 'spot',
market: 'usdcOption',
// market: 'spotv3',
// market: 'usdcOption',
// market: 'usdcPerp',
// market: 'unifiedPerp',
// market: 'unifiedOption',
},
logger
);
wsClient.on('update', (data) => {
console.log('raw message received ', JSON.stringify(data, null, 2));
console.log('raw message received ', JSON.stringify(data));
// console.log('raw message received ', JSON.stringify(data, null, 2));
});
wsClient.on('open', (data) => {
console.log('connection opened open:', data.wsKey);
if (data.wsKey === WS_KEY_MAP.spotPublic) {
// Spot public.
// wsClient.subscribePublicSpotTrades('BTCUSDT');
// wsClient.subscribePublicSpotTradingPair('BTCUSDT');
// wsClient.subscribePublicSpotV1Kline('BTCUSDT', '1m');
// wsClient.subscribePublicSpotOrderbook('BTCUSDT', 'full');
}
// if (data.wsKey === WS_KEY_MAP.spotPublic) {
// // Spot public, but not recommended - use spotv3 client instead
// // The old spot websockets dont automatically resubscribe if they disconnect
// // wsClient.subscribePublicSpotTrades('BTCUSDT');
// // wsClient.subscribePublicSpotTradingPair('BTCUSDT');
// // wsClient.subscribePublicSpotV1Kline('BTCUSDT', '1m');
// // wsClient.subscribePublicSpotOrderbook('BTCUSDT', 'full');
// }
});
wsClient.on('response', (data) => {
console.log('log response: ', JSON.stringify(data, null, 2));
@@ -52,10 +58,16 @@ import { DefaultLogger, WS_KEY_MAP, WebsocketClient } from '../src';
// Linear
wsClient.subscribe('trade.BTCUSDT');
// Spot V3
// usdc options
wsClient.subscribe(`recenttrades.BTC`);
wsClient.subscribe(`recenttrades.ETH`);
wsClient.subscribe(`recenttrades.SOL`);
// wsClient.subscribe(`recenttrades.BTC`);
// wsClient.subscribe(`recenttrades.ETH`);
// wsClient.subscribe(`recenttrades.SOL`);
// usdc perps
// unified perps
// setTimeout(() => {
// console.log('unsubscribing');

View File

@@ -188,18 +188,22 @@ export class WebsocketClient extends EventEmitter {
return this.options.testnet === true;
}
public close(wsKey: WsKey) {
public close(wsKey: WsKey, force?: boolean) {
this.logger.info('Closing connection', { ...loggerCategory, wsKey });
this.setWsState(wsKey, WsConnectionStateEnum.CLOSING);
this.clearTimers(wsKey);
this.getWs(wsKey)?.close();
const ws = this.getWs(wsKey);
ws?.close();
if (force) {
ws?.terminate();
}
}
public closeAll() {
public closeAll(force?: boolean) {
const keys = this.wsStore.getKeys();
keys.forEach((key) => {
this.close(key);
this.close(key, force);
});
}
@@ -460,6 +464,10 @@ export class WebsocketClient extends EventEmitter {
}
private ping(wsKey: WsKey) {
if (this.wsStore.get(wsKey, true).activePongTimer) {
return;
}
this.clearPongTimer(wsKey);
this.logger.silly('Sending ping', { ...loggerCategory, wsKey });
@@ -470,7 +478,8 @@ export class WebsocketClient extends EventEmitter {
...loggerCategory,
wsKey,
});
this.getWs(wsKey)?.close();
this.getWs(wsKey)?.terminate();
delete this.wsStore.get(wsKey, true).activePongTimer;
}, this.options.pongTimeout);
}
@@ -622,9 +631,9 @@ export class WebsocketClient extends EventEmitter {
const msg = JSON.parse((event && event.data) || event);
this.logger.silly('Received event', {
...this.logger,
...loggerCategory,
wsKey,
msg: JSON.stringify(msg, null, 2),
msg: JSON.stringify(msg),
});
// TODO: cleanme