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