relay: fix connection metrics

This commit is contained in:
Alex Gleason 2024-09-21 14:48:50 -05:00
parent 9c9b87bc94
commit 5a0a2087e5
No known key found for this signature in database
GPG key ID: 7211D1F99744FBB7

View file

@ -26,14 +26,16 @@ const LIMITER_LIMIT = 300;
const limiter = new TTLCache<string, number>();
/** Connections for metrics purposes. */
const connections = new Set<WebSocket>();
/** Set up the Websocket connection. */
function connectStream(socket: WebSocket, ip: string | undefined) {
let opened = false;
const controllers = new Map<string, AbortController>();
socket.onopen = () => {
opened = true;
relayConnectionsGauge.inc();
connections.add(socket);
relayConnectionsGauge.set(connections.size);
};
socket.onmessage = (e) => {
@ -63,9 +65,8 @@ function connectStream(socket: WebSocket, ip: string | undefined) {
};
socket.onclose = () => {
if (opened) {
relayConnectionsGauge.dec();
}
connections.delete(socket);
relayConnectionsGauge.set(connections.size);
for (const controller of controllers.values()) {
controller.abort();