mirror of
https://github.com/pezkuwichain/pezkuwi-telemetry.git
synced 2026-05-30 20:31:07 +00:00
Log backend connections
This commit is contained in:
@@ -88,5 +88,9 @@ export default class Aggregator {
|
||||
for (const chain of this.chains.values()) {
|
||||
chain.timeoutCheck(now);
|
||||
}
|
||||
|
||||
for (const feed of this.feeds.values()) {
|
||||
feed.ping();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ import * as WebSocket from 'ws';
|
||||
import * as EventEmitter from 'events';
|
||||
import Node from './Node';
|
||||
import Chain from './Chain';
|
||||
import { VERSION, timestamp, Maybe, FeedMessage, Types, idGenerator } from '@dotstats/common';
|
||||
import { VERSION, noop, timestamp, Maybe, FeedMessage, Types, idGenerator } from '@dotstats/common';
|
||||
import { Location } from './location';
|
||||
|
||||
const nextId = idGenerator<Types.FeedId>();
|
||||
@@ -16,6 +16,7 @@ export default class Feed {
|
||||
|
||||
private socket: WebSocket;
|
||||
private messages: Array<FeedMessage.Message> = [];
|
||||
private waitingForPong = false;
|
||||
|
||||
constructor(socket: WebSocket) {
|
||||
this.id = nextId();
|
||||
@@ -24,6 +25,7 @@ export default class Feed {
|
||||
socket.on('message', (data) => this.handleCommand(data.toString()));
|
||||
socket.on('error', () => this.disconnect());
|
||||
socket.on('close', () => this.disconnect());
|
||||
socket.on('pong', () => this.waitingForPong = false);
|
||||
}
|
||||
|
||||
public static feedVersion(): FeedMessage.Message {
|
||||
@@ -131,6 +133,15 @@ export default class Feed {
|
||||
}
|
||||
}
|
||||
|
||||
public ping() {
|
||||
if (this.waitingForPong) {
|
||||
this.disconnect();
|
||||
return;
|
||||
}
|
||||
this.waitingForPong = true;
|
||||
this.socket.ping(noop);
|
||||
}
|
||||
|
||||
private sendMessages = () => {
|
||||
const data = FeedMessage.serialize(this.messages);
|
||||
this.messages = [];
|
||||
@@ -165,7 +176,7 @@ export default class Feed {
|
||||
|
||||
private disconnect() {
|
||||
this.socket.removeAllListeners();
|
||||
this.socket.close();
|
||||
this.socket.terminate();
|
||||
|
||||
this.events.emit('disconnect');
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import * as WebSocket from 'ws';
|
||||
import * as EventEmitter from 'events';
|
||||
import { timestamp, Maybe, Types, idGenerator } from '@dotstats/common';
|
||||
import { noop, timestamp, Maybe, Types, idGenerator } from '@dotstats/common';
|
||||
import { parseMessage, getBestBlock, Message, BestBlock, SystemInterval } from './message';
|
||||
import { locate, Location } from './location';
|
||||
|
||||
@@ -14,8 +14,6 @@ export interface NodeEvents {
|
||||
emit(event: 'location', location: Location): void;
|
||||
}
|
||||
|
||||
function noop() {}
|
||||
|
||||
export default class Node {
|
||||
public readonly id: Types.NodeId;
|
||||
public readonly name: Types.NodeName;
|
||||
|
||||
@@ -33,6 +33,14 @@ incomingTelemetry.on('connection', async (socket, req) => {
|
||||
}
|
||||
});
|
||||
|
||||
function logClients() {
|
||||
const feed = telemetryFeed.clients.size;
|
||||
const node = incomingTelemetry.clients.size;
|
||||
|
||||
console.log(`[System] ${feed} open telemetry connections; ${node} open feed connections`);
|
||||
}
|
||||
|
||||
|
||||
telemetryFeed.on('connection', (socket: WebSocket) => {
|
||||
aggregator.addFeed(new Feed(socket));
|
||||
});
|
||||
|
||||
@@ -33,3 +33,5 @@ export function sleep(time: Milliseconds): Promise<void> {
|
||||
}
|
||||
|
||||
export const timestamp = Date.now as () => Timestamp;
|
||||
|
||||
export function noop() {}
|
||||
|
||||
Reference in New Issue
Block a user