在客户端GWT处理服务器发送事件

时间:2016-03-22 17:47:15

标签: java gwt server-sent-events

我需要为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在客户端接收数据的问题吗?

1 个答案:

答案 0 :(得分:0)

GWT push back services中存在很多方法,例如GWT Event Services enter link description here

为了让服务器向客户端发起请求,您需要使用WebSockets和当前的实验性HTML5功能only supported by Chrome.

或者,为了模拟这种交互,您可以使用Comet(长轮询),由rocket-gwt project在GWT中提供。