Merge pull request #42 from drift-labs/master

try catch for l2 and no ping/pong
This commit is contained in:
Nour Alharithi
2023-12-11 06:53:28 -08:00
committed by GitHub
2 changed files with 7 additions and 23 deletions

View File

@@ -18,6 +18,7 @@ import {
addOracletoResponse,
l2WithBNToStrings,
} from '../utils/utils';
import { logger } from '../utils/logger';
type wsMarketL2Args = {
marketIndex: number;
@@ -87,7 +88,12 @@ export class DLOBSubscriberIO extends DLOBSubscriber {
override async updateDLOB(): Promise<void> {
await super.updateDLOB();
for (const l2Args of this.marketL2Args) {
try {
this.getL2AndSendMsg(l2Args);
} catch (error) {
logger.error(error);
console.log(`Error getting L2 ${l2Args.marketName}`);
}
}
}

View File

@@ -233,31 +233,9 @@ async function main() {
}
});
// Ping/pong connection timeout
let pongTimeoutId;
let isAlive = true;
const pingIntervalId = setInterval(() => {
isAlive = false;
pongTimeoutId = setTimeout(() => {
if (!isAlive) {
console.log('Disconnecting because of ping/pong timeout');
ws.terminate();
}
}, 5000); // 5 seconds to wait for a pong
ws.ping();
}, 30000);
// Listen for pong messages
ws.on('pong', () => {
isAlive = true;
clearTimeout(pongTimeoutId);
});
// Handle disconnection
ws.on('close', () => {
// Clear any existing intervals and timeouts
clearInterval(pingIntervalId);
clearTimeout(pongTimeoutId);
channelSubscribers.forEach((subscribers, channel) => {
if (subscribers.delete(ws) && subscribers.size === 0) {
redisClient.client.unsubscribe(channel);