0

我不知道如何获得一个推送到所有客户端而不是只推送到一个客户端的 EventExecutor。我在手册中找到了一段话,其中指出我可以在服务器端获得所需的功能EventExecutorServiceFactory.getInstance().getEventExecutorService(String),不幸的是需要用户 ID。我尝试提供空字符串或 null 但没有成功。那么如何向所有监听客户端发送事件呢?

4

1 回答 1

1

在服务器端,您可以:

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

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

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

httpServletRequest当前的 http 请求在哪里(例如,getThreadLocalRequest()在基于 RPC 的 servlet 中检索它)。

关键是您需要定义将在其中发布事件的域。然后您可以自由地使用addEvent(yourDomain, yourEvent)(从您的 servlet 或从执行程序)将您的事件发送到所有正在监听此类事件的可用客户端。

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

PS 如果您直接向小组论坛提问,您可能会获得更多的知名度。

于 2013-06-25T09:30:09.433 回答