scalable-push-notifications icon indicating copy to clipboard operation
scalable-push-notifications copied to clipboard

Emitters sending unnecessarily

Open channyeintun opened this issue 3 years ago • 0 comments
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);

}

channyeintun avatar May 12 '22 06:05 channyeintun