send metrics when connecting to the websocket
All checks were successful
Deploy App / docker (ubuntu-latest, 2.44.0, 17, 3.8.5) (push) Successful in 1m44s
All checks were successful
Deploy App / docker (ubuntu-latest, 2.44.0, 17, 3.8.5) (push) Successful in 1m44s
This commit is contained in:
parent
c5758d38e0
commit
9fd84f2e5b
@ -22,26 +22,39 @@ public class MetricsWebSocketHandler extends TextWebSocketHandler {
|
||||
private final long interval = TimeUnit.SECONDS.toMillis(5);
|
||||
public final List<WebSocketSession> sessions = new ArrayList<>();
|
||||
|
||||
private final MetricService metricService;
|
||||
|
||||
public MetricsWebSocketHandler(MetricService metricService) {
|
||||
this.metricService = metricService;
|
||||
Timer.scheduleRepeating(() -> {
|
||||
for (WebSocketSession session : sessions) {
|
||||
sendMetrics(session);
|
||||
}
|
||||
}, interval, interval);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends the metrics to the client.
|
||||
*
|
||||
* @param session the session to send the metrics to
|
||||
*/
|
||||
private void sendMetrics(WebSocketSession session) {
|
||||
try {
|
||||
WebsocketMetrics metrics = new WebsocketMetrics(Map.of(
|
||||
"totalRequests", metricService.getMetric(TotalRequestsMetric.class).getValue())
|
||||
);
|
||||
|
||||
for (WebSocketSession session : sessions) {
|
||||
session.sendMessage(new TextMessage(Main.GSON.toJson(metrics)));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("An error occurred while sending metrics to the client", e);
|
||||
}
|
||||
}, interval, interval);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterConnectionEstablished(WebSocketSession session) {
|
||||
log.info("WebSocket connection established with session id: {}", session.getId());
|
||||
|
||||
sendMetrics(session);
|
||||
sessions.add(session);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user