我有一個用Java實現的桌面客戶端和服務器端。服務器端坐在Tomcat上。尋找Server Sent Events規範的客戶端的Java實現。
現在我想檢查使用服務器發送事件,而Tomcat使它可以在服務器上使用它,我不知道我怎麼能從它的客戶端。所有的實現都使用Javascript,如果你的客戶端是Javascript客戶端,這很好。我的不是。
所以,我的問題是 - SSE規範的客戶端是否有Java實現?
我有一個用Java實現的桌面客戶端和服務器端。服務器端坐在Tomcat上。尋找Server Sent Events規範的客戶端的Java實現。
現在我想檢查使用服務器發送事件,而Tomcat使它可以在服務器上使用它,我不知道我怎麼能從它的客戶端。所有的實現都使用Javascript,如果你的客戶端是Javascript客戶端,這很好。我的不是。
所以,我的問題是 - SSE規範的客戶端是否有Java實現?
我有同樣的問題,並找到了解決方案。新澤西州有一個SSE客戶端(它不是標準發行版的一部分,還需要在球衣媒體-SSE罐子,你可以在Maven倉庫中找到。
public static void consumeEventStream(String url, Consumer consumer) throws Exception {
Client client = ClientBuilder.newBuilder().register(new SseFeature()).build();
WebTarget target = client.target(url);
EventInput e = null;
while (true) {
Thread.sleep(1000);
if (e==null || e.isClosed()) {
// (re)connect
e = target.request().get(EventInput.class);
e.setChunkType("text/event-stream");
}
final InboundEvent inboundEvent = e.read();
if (inboundEvent == null) {
break;
}
else {
String data = inboundEvent.getData();
// do something here - notify observers, parse json etc
}
}
System.out.println("connection closed");
}
setChunkType的調用是處理錯誤在澤西島 - 如果字符編碼是內容類型的一部分,球衣不會識別事件類型。另一方面,規範和瀏覽器期望內容類型被設置。 Acc。to jira已解決,但是defintely不是最新的版本還沒有工作 球衣媒體-SSE-2.2.jar,也https://java.net/jira/browse/JERSEY-2062見。
希望這有助於延
親切地檢查ma評論以上 – Sadanand 2014-05-18 04:18:22
澤西島也有一個EventSource類來隱藏一些內部以及異步處理:https://jersey.java.net/documentation/latest/sse.html#d0e11876 – mikemachado 2015-07-01 04:13:43
它的工作。謝謝你的文件。 – thangdc94 2017-02-14 04:16:14
這是關於github:https://github.com/aslakhellesoy/eventsource-java。儘管如此,它可以追溯到2011年。
對此有何看法?球衣SSE正在爲你服務?你能幫我麼 ? http://stackoverflow.com/questions/23672354/server-side-event-not-firing-in-jersey-2-8-using-sse – Sadanand 2014-05-18 04:17:37