2013-06-24 62 views
0

我無法弄清楚如何讓EventExecutor推送到所有客戶端,而不是隻有一個。我在手冊中找到了一段話,說明我可以通過EventExecutorServiceFactory.getInstance().getEventExecutorService(String)在服務器端獲得所需的功能,這不幸需要用戶ID。我試圖提供一個空字符串或null,但沒有成功。那麼你如何向所有聽客戶發送活動?GWTEventService推送給所有客戶端

+0

'EventExecutorServiceFactory'不是GWT中的類 - 你從哪裏得到這個(你可以添加它作爲標籤,以便該lib中的專家可以看到它)? –

+0

該類來自GWTEventService庫(參見標題)。不幸的是,這個庫似乎沒有標籤,我缺少創建一個150位代表。 =( – annih

回答

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,您可能會有更多的知名度。

+0

是否有任何理由不將所有我的'RemoteServiceServlets'轉換爲'RemoteEventServiceServlets'? – annih