fix user count

This commit is contained in:
Athou
2023-06-22 07:19:33 +02:00
parent b1938c234c
commit 4d0a8fd133

View File

@@ -19,12 +19,13 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j @Slf4j
public class WebSocketSessions { public class WebSocketSessions {
// a user may have multiple sessions (two tabs, on mobile, ...) // a user may have multiple sessions (two tabs, two devices, ...)
private final Map<Long, Set<Session>> sessions = new ConcurrentHashMap<>(); private final Map<Long, Set<Session>> sessions = new ConcurrentHashMap<>();
@Inject @Inject
public WebSocketSessions(MetricRegistry metrics) { public WebSocketSessions(MetricRegistry metrics) {
metrics.register(MetricRegistry.name(getClass(), "users"), (Gauge<Integer>) sessions::size); metrics.register(MetricRegistry.name(getClass(), "users"),
(Gauge<Long>) () -> sessions.values().stream().filter(v -> !v.isEmpty()).count());
metrics.register(MetricRegistry.name(getClass(), "sessions"), metrics.register(MetricRegistry.name(getClass(), "sessions"),
(Gauge<Long>) () -> sessions.values().stream().mapToLong(Set::size).sum()); (Gauge<Long>) () -> sessions.values().stream().mapToLong(Set::size).sum());
} }
@@ -34,7 +35,7 @@ public class WebSocketSessions {
} }
public void remove(Session session) { public void remove(Session session) {
sessions.values().forEach(v -> v.removeIf(e -> e.equals(session))); sessions.values().forEach(v -> v.remove(session));
} }
public void sendMessage(User user, String text) { public void sendMessage(User user, String text) {