scalable-push-notifications
scalable-push-notifications copied to clipboard
Emitters sending unnecessarily
trafficstars
List<SseEmitter> emitters = new ArrayList<>(); //... emitters.forEach(emitter -> { try { emitter.send(SseEmitter .event() .name(username) .data(payload));
} catch (IOException e) {
deadEmitters.add(emitter);
}
});
Above code is not efficient. You should use Map instead of List.
// Should use map private Map<String, SseEmitter> emitters = new ConcurrentHashMap<>(); // Store in map emitters.put(username,emitter); // Get from map SseEmitter emitter=emitters.get(username); // you can validate if emitter is null try {
emitter.send(SseEmitter
.event()
.name(username)
.data(payload));
} catch (IOException e) {
// remove from map
emitters.remove(username);
}