我需要为Server-Sent-Event实现前端。我使用GWT,我找不到任何解决方案来为SSE创建一个监听器。我需要从服务器推送数据,并在每次更改数据时在客户端上接收数据。所以现在我有这样的事情:
private void method() {
final EventSource eventSource = EventSource.newEventSourceIfSupported();
if (null != eventSource) {
eventSource.setListener(this);
eventSource.open(GWT.getHostPageBaseURL() + "rest/myresource");
}
}
@Override
public void onOpen(EventSource eventSource) {
Window.alert("Open");
}
@Override
public void onClose(EventSource eventSource) {
Window.alert("onClose");
}
@Override
public void onMessage(EventSource eventSource, String lastEventId, String type, String data) {
Window.alert("lastEventId: " + lastEventId);
Window.alert("type: " + type);
Window.alert("data: " + data);
}
@Override
public void onError(EventSource eventSource) {
Window.alert("onError");
}
我的班级实施EventSourceListener
但它不起作用。实际上这个代码仅在连接打开时才会起作用,但是不可能从服务器接收任何消息。有人知道如何处理使用GWT在客户端接收数据的问题吗?
答案 0 :(得分:0)
GWT
push back services
中存在很多方法,例如GWT Event Services
enter link description here
为了让服务器向客户端发起请求,您需要使用WebSockets
和当前的实验性HTML5功能only supported by Chrome.
或者,为了模拟这种交互,您可以使用Comet
(长轮询),由rocket-gwt project
在GWT中提供。