public SseEventBuilder createSseEventBuilder() { SseEventBuilder sseBuilder = SseEmitter.event(); if (!this.event.event().equals(SseEvent.DEFAULT_EVENT)) { sseBuilder.name(this.event.event()); } this.event.id().ifPresent(sseBuilder::id); this.event.retry().map(Duration::toMillis).ifPresent(sseBuilder::reconnectTime); this.event.comment().ifPresent(sseBuilder::comment); if (this.convertedValue != null) { sseBuilder.data(this.convertedValue); } else { sseBuilder.data(this.event.data()); } return sseBuilder; }
private void sendAndStopOnError(String event, Optional<String> id, Object data) { try { SseEventBuilder builder = SseEmitter.event().name(event).data(data); id.ifPresent(builder::id); sseEmitter.send(builder); } catch (Exception e) { log.warn("Error in SSE channel: " + e); stop(); } }
@RequestMapping( value = "/newSugerence") @EventListener public void newSugerence(Sugerencia data){ System.out.println("Evento escuchado!"); SseEventBuilder newSugerenceEvent = SseEmitter.event().name("evento").data("{ \"tipo\": \"newSugerence\" , \"title\":\"" + data.getTitulo() + "\"}"); sendEvent(newSugerenceEvent); }
@RequestMapping( value = "/newComentary") @EventListener public void newComentary(Comentario data){ SseEventBuilder newComentaryEvent = SseEmitter.event().name("evento").data("{ \"tipo\": \"newComentary\" , \"title\":\"" + data.getSugerencia().getTitulo() +"\" }"); sendEvent(newComentaryEvent); }
private void sendEvent(SseEventBuilder event){ synchronized (sseEmitters) { for(SseEmitter emitter: sseEmitters){ try { System.out.println("Enviando el evento"); emitter.send(event); } catch (IOException e) { e.printStackTrace(); } } } }
@RequestMapping( value = "/upvoteSugerence") @EventListener public void upvoteSugerence(UpvoteEvent data){ SseEventBuilder upvoteSugerenceEvent = SseEmitter.event().name("evento").data("{ \"tipo\": \"upvote\" , \"title\":\"" + data.getTitulo() + "\" , \"votes\": \""+ (data.getVotos()+1)+ "\" }"); sendEvent(upvoteSugerenceEvent); }