我有一个桌面客户端和一个服务器端,两者都是用Java实现的。服务器端运行在Tomcat上。
现在我想使用Server Sent Events进行检查,尽管Tomcat可以在服务器端使用它,但我不知道如何从客户端使用它。所有的实现都使用JavaScript,如果您的客户端是JavaScript客户端,则没有问题。我的客户端不是JavaScript客户端。
那么,我的问题是 - 有没有Java实现SSE规范的客户端端?
我有一个桌面客户端和一个服务器端,两者都是用Java实现的。服务器端运行在Tomcat上。
现在我想使用Server Sent Events进行检查,尽管Tomcat可以在服务器端使用它,但我不知道如何从客户端使用它。所有的实现都使用JavaScript,如果您的客户端是JavaScript客户端,则没有问题。我的客户端不是JavaScript客户端。
那么,我的问题是 - 有没有Java实现SSE规范的客户端端?
我曾经遇到过同样的问题,不过找到了解决方案。Jersey有一个SSE客户端(它不是标准分发的一部分),您还需要jersey-media-sse jar,可以在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");
}