GWTEventService推送给所有客户端

时间:2013-06-24 20:38:43

标签: java events gwt gwt-eventservice

我无法弄清楚如何将EventExecutor推送到所有客户端而不只是一个客户端。我发现手册中的段落表明我可以通过EventExecutorServiceFactory.getInstance().getEventExecutorService(String)在服务器端获得所需的功能,但遗憾的是需要用户ID。我尝试提供空字符串或null但没有成功。那你如何向所有听众客户发送活动呢?

1 个答案:

答案 0 :(得分:1)

在服务器端,您可以:

  • 扩展RemoteEventServiceServlet(如果你可以/你被允许);
  • 使用进程内EventExecutorService

在第一种情况下,您已经在servlet中使用了addEvent()方法,在第二种情况下,您需要通过以下方式实例化执行程序服务:

EventExecutorServiceFactory factory =
    EventExecutorServiceFactory.getInstance();
EventExecutorService service =
    factory.getEventExecutorService(httpServletRequest)

其中httpServletRequest是当前的http请求(例如,在基于RPC的servlet中使用getThreadLocalRequest()检索它)。

重点是您需要定义将发布事件的。然后,您可以自由地使用addEvent(yourDomain, yourEvent)(来自您的servlet或执行程序)将您的事件发送给正在收听此类事件的所有可用客户端。

换句话说,事件总是广播到在特定上注册的所有可用客户端。如果要将事件发送到特定客户端,请使用DomainFactory.USER_SPECIFIC_DOMAIN作为域。

P.S。如果您直接询问groupforum

,您可能会有更多的曝光度