List of usage examples for org.springframework.web.servlet.mvc.method.annotation SseEmitter onCompletion
public synchronized void onCompletion(Runnable callback)
From source file:com.bodybuilding.argos.controller.SseEmitterUtil.java
/** * Unsubscribes the subscription when the emitter completes or times out * @param emitter/*from w w w .ja va 2s . c o m*/ * @param subscription */ public static void bindUnsubscribe(SseEmitter emitter, Subscription subscription) { emitter.onCompletion(subscription::unsubscribe); emitter.onTimeout(subscription::unsubscribe); }
From source file:de.codecentric.boot.admin.journal.web.JournalController.java
@RequestMapping(path = "/api/journal", produces = "text/event-stream") public SseEmitter getJournalEvents() { final SseEmitter emitter = new SseEmitter(); emitter.onCompletion(new Runnable() { @Override/* w ww . ja v a 2 s . co m*/ public void run() { emitters.remove(emitter); } }); emitters.add(emitter); return emitter; }
From source file:io.github.proxyprint.kitchen.utils.NotificationManager.java
public SseEmitter subscribe(String username) { SseEmitter sseEmitter = new SseEmitter(0l); sseEmitter.onCompletion(new DeleteTask(this, username, sseEmitter)); this.subscriptions.put(username, sseEmitter); return sseEmitter; }
From source file:io.spring.isomorphic.CommentController.java
@RequestMapping("/sse/updates") SseEmitter subscribeUpdates() {/*from ww w . j av a 2 s.c o m*/ SseEmitter sseEmitter = new SseEmitter(); this.sseEmitters.add(sseEmitter); sseEmitter.onCompletion(() -> { this.sseEmitters.remove(sseEmitter); }); return sseEmitter; }
From source file:com.ethlo.kfka.sse.EventController.java
@RequestMapping(value = "/v1/events", method = RequestMethod.GET) public SseEmitter event(@RequestHeader(value = "Last-Event-ID", required = false) String lastEventIdHeader, @RequestParam(required = true, value = "topic") String topic, @RequestParam(required = false, value = "rewind") Integer rewind, @RequestParam(required = false, value = "lastEventId") Long lastEventIdOverride) throws IOException { final SseEmitter sseEmitter = new SseEmitter(); final Emitter emitter = new Emitter(sseEmitter); logger.debug("Opening emitter {}", emitter.hashCode()); this.emitters.add(emitter); final Long lastEventId = lastEventIdOverride != null ? lastEventIdOverride : (lastEventIdHeader != null ? Long.parseLong(lastEventIdHeader) : null); final KfkaPredicate p = new KfkaPredicate().topic(topic); if (lastEventId != null) { p.messageId(lastEventId + 1);/*from w ww . j a v a 2s .c o m*/ p.relativeOffset(Integer.MIN_VALUE + 10); } else { final int offset = rewind != null ? Math.abs(rewind) * -1 : -20; p.relativeOffset(offset); } final KfkaMessageListener l = kfkaManager.addListener((msg) -> { try { emitter.emit(msg); } catch (IOException exc) { throw Throwables.propagate(exc); } }, p); emitter.setListener(l); // Remove on completion sseEmitter.onCompletion(new Runnable() { @Override public void run() { logger.debug("Emitter {} closed", emitter.hashCode()); emitters.remove(emitter); kfkaManager.removeListener(emitter.getListener()); } }); return sseEmitter; }