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