javax.ws.rs.sse.SseEventSink#close ( )源码实例Demo

下面列出了javax.ws.rs.sse.SseEventSink#close ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: quarkus   文件: ServerSentEventResource.java
@GET
@Path("/stream-xml")
@SseElementType(MediaType.TEXT_XML)
@Produces(MediaType.SERVER_SENT_EVENTS)
public void sendXmlData(@Context SseEventSink sink) {
    // send a stream of few events
    try {
        for (int i = 0; i < 3; i++) {
            final OutboundSseEvent.Builder builder = this.sse.newEventBuilder();
            builder.id(String.valueOf(i)).mediaType(MediaType.TEXT_XML_TYPE)
                    .data("<settings><foo bar=\"" + i + "\"/></settings>")
                    .name("stream of XML data");

            sink.send(builder.build());
        }
    } finally {
        sink.close();
    }
}
 
@GET
@Path("/sse")
@SseElementType(MediaType.APPLICATION_JSON)
@Produces(MediaType.SERVER_SENT_EVENTS)
public void serverSentEvents(@Context SseEventSink sink) {
    VanillaJavaImmutableData data = new VanillaJavaImmutableData("sse", "ssevalue");
    try {
        OutboundSseEvent.Builder builder = sse.newEventBuilder();
        builder.id(String.valueOf(1))
                .mediaType(MediaType.APPLICATION_JSON_TYPE)
                .data(data)
                .name("stream of json data");

        sink.send(builder.build());
    } finally {
        sink.close();
    }
}
 
源代码3 项目: quarkus   文件: ServerSentEventResource.java
@GET
@Path("/stream")
@Produces(MediaType.SERVER_SENT_EVENTS)
public void sendData(@Context SseEventSink sink) {
    // send a stream of few events
    try {
        for (int i = 0; i < 3; i++) {
            final OutboundSseEvent.Builder builder = this.sse.newEventBuilder();
            builder.id(String.valueOf(i)).mediaType(MediaType.TEXT_PLAIN_TYPE)
                    .data(Integer.class, i)
                    .name("stream of numbers");

            sink.send(builder.build());
        }
    } finally {
        sink.close();
    }
}
 
源代码4 项目: quarkus   文件: ServerSentEventResource.java
@GET
@Path("/stream-html")
@Produces(MediaType.SERVER_SENT_EVENTS)
@SseElementType("text/html")
public void sendHtmlData(@Context SseEventSink sink) {
    // send a stream of few events
    try {
        for (int i = 0; i < 3; i++) {
            final OutboundSseEvent.Builder builder = this.sse.newEventBuilder();
            builder.id(String.valueOf(i)).mediaType(MediaType.TEXT_HTML_TYPE)
                    .data("<html><body>" + i + "</body></html>")
                    .name("stream of pages");

            sink.send(builder.build());
        }
    } finally {
        sink.close();
    }
}
 
源代码5 项目: openhab-core   文件: SseBroadcaster.java
private void close(final SseEventSink sink) {
    try {
        sink.close();
    } catch (final RuntimeException ex) {
        logger.debug("Closing a SSE event sink failed. Nothing we can do here...", ex);
    }
}
 
源代码6 项目: hammock   文件: SseEndpoint.java
@GET
@Path("/{uuid}")
@Produces(SERVER_SENT_EVENTS)
public void doSseCall(@PathParam("uuid") String uuid, @Context SseEventSink sink, @Context Sse sse) {
    final OutboundSseEvent.Builder builder = sse.newEventBuilder();
    OutboundSseEvent event = builder.id(uuid)
            .data(SseModel.class, new SseModel("some model "+uuid))
            .build();
    sink.send(event);
    sink.close();
}
 
源代码7 项目: cxf   文件: BookStore.java
@GET
@Path("nodata")
@Produces(MediaType.SERVER_SENT_EVENTS)
public void nodata(@Context SseEventSink sink) {
    sink.close();
}
 
源代码8 项目: cxf   文件: BookStore2.java
@GET
@Path("nodata")
@Produces(MediaType.SERVER_SENT_EVENTS)
public void nodata(@Context SseEventSink sink) {
    sink.close();
}
 
源代码9 项目: tutorials   文件: SseResource.java
@GET
@Path("prices")
@Produces("text/event-stream")
public void getStockPrices(@Context SseEventSink sseEventSink,
                           @HeaderParam(HttpHeaders.LAST_EVENT_ID_HEADER) @DefaultValue("-1") int lastReceivedId) {

    int lastEventId = 1;
    if (lastReceivedId != -1) {
        lastEventId = ++lastReceivedId;
    }
    boolean running = true;
    while (running) {
        Stock stock = stockService.getNextTransaction(lastEventId);
        if (stock != null) {
            OutboundSseEvent sseEvent = this.eventBuilder
                    .name("stock")
                    .id(String.valueOf(lastEventId))
                    .mediaType(MediaType.APPLICATION_JSON_TYPE)
                    .data(Stock.class, stock)
                    .reconnectDelay(3000)
                    .comment("price change")
                    .build();
            sseEventSink.send(sseEvent);
            lastEventId++;
        }
        //Simulate connection close
        if (lastEventId % 5 == 0) {
            sseEventSink.close();
            break;
        }

        try {
            //Wait 5 seconds
            Thread.sleep(5 * 1000);
        } catch (InterruptedException ex) {
            // ...
        }
        //Simulatae a while boucle break
        running = lastEventId <= 2000;
    }
    sseEventSink.close();
}
 
 方法所在类
 同类方法