[英]How can I asynchronously handle SSE events?
理想情況下,我希望能夠做這樣的事情
Request request = new Request("http://someendpoint")
request.onMessage(payload -> System.out.println(payload))
request.onError(error -> error.printStackTrace())
request.onClose(() -> System.out.println("closed"))
request.onConnect(isReconnect -> System.out.println("connected"))
顯然不必一定是那樣,只是認為這將有助於解釋我的嘗試。
我看到澤西島對此提供了某種支持。 我想找到一個替代方法,但如果沒有其他可用方法,將使用它。
在JavaEE 8中,通過javax.ws.rs.sse包中的JAX-RS 2.1可以使用SSE。 與可以同步或異步的請求和響應不同,SSE本質上是異步的。
有關SSE的演示,請觀看David Delaba sse e的這段視頻 。 您的代碼(僅客戶端)將如下所示:
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://someendpoint");
SseEventSource eventSource = SseEventSource.target(target)
.reconnectingEvery(5, TimeUnit.SECONDS)
.build();
eventSource.register(payload -> System.out.println(payload), // Consumer<InboundSseEvent>
error -> error.printStackTrace(), // Consumer<Throwable>
() -> System.out.println("no more events"));
eventSource.open();
// and eventually
eventSource.close();
沒有用於(重新)連接和關閉的內置處理程序,但是您可以自定義某些內容以產生相同的效果。
JAX-RS 2.1在(至少)中實現:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.