/** * Put a new message to the stream. * * The message will be broadcast to all registered SSE clients. * * @param message message to be broadcast. */ @PUT @Consumes(MediaType.APPLICATION_JSON) public void putMessage(final Message message) { LOGGER.info("--> Message received."); final OutboundEvent event = new OutboundEvent.Builder() .id(String.valueOf(nextMessageId.getAndIncrement())) .mediaType(MediaType.APPLICATION_JSON_TYPE) .data(Message.class, message) .build(); broadcaster.broadcast(event); }
public void run() { try { if (latch != null) { // wait for all test EventSources to be registered latch.await(5, TimeUnit.SECONDS); } broadcaster.broadcast( new OutboundEvent.Builder().name("domain-progress").data(String.class, "starting domain " + id + " ...") .build()); broadcaster.broadcast(new OutboundEvent.Builder().name("domain-progress").data(String.class, "50%").build()); broadcaster.broadcast(new OutboundEvent.Builder().name("domain-progress").data(String.class, "60%").build()); broadcaster.broadcast(new OutboundEvent.Builder().name("domain-progress").data(String.class, "70%").build()); broadcaster.broadcast(new OutboundEvent.Builder().name("domain-progress").data(String.class, "99%").build()); broadcaster.broadcast(new OutboundEvent.Builder().name("domain-progress").data(String.class, "done").build()); broadcaster.closeAll(); } catch (InterruptedException e) { e.printStackTrace(); } } }
@Override public void run() { broadcaster.broadcast(SseUtil.buildEvent(event)); } });
@Override public void run() { broadcaster.broadcast(SseUtil.buildEvent(event)); } });
public class TestServlet extends HttpServlet { SseBroadcaster broadcaster = new SseBroadcaster(); @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Scanner scanner = new Scanner(req.getInputStream()); StringBuilder sb = new StringBuilder(); while(scanner.hasNextLine()) { sb.append(scanner.nextLine()); } System.out.println("sb = " + sb); broadcaster.broadcast("message",sb.toString()); } //http://cjihrig.com/blog/the-server-side-of-server-sent-events/ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { broadcaster.addListener(req); } }
@Override public void update(Observable o, Object arg) { if (o instanceof StreamBroadcaster && arg != null) { EventEnvelope e = (EventEnvelope) arg; OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder(); OutboundEvent event = eventBuilder .mediaType(MediaType.APPLICATION_JSON_TYPE) .id(e.eventId.orElse(null)) .name(e.eventType) .data(e.eventData) .build(); BROADCASTER.broadcast(event); } } }
@Override public void onEvent(SitemapEvent event) { OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder(); OutboundEvent outboundEvent = eventBuilder.name("event").mediaType(MediaType.APPLICATION_JSON_TYPE).data(event) .build(); broadcaster.broadcast(outboundEvent); }
@Override public void onEvent(SitemapEvent event) { OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder(); OutboundEvent outboundEvent = eventBuilder.name("event").mediaType(MediaType.APPLICATION_JSON_TYPE).data(event) .build(); broadcaster.broadcast(outboundEvent); }
broadcaster.broadcast(event); // invokes eventOutput.write(event);