簡體   English   中英

GWT Eventservice:如何在服務器端檢測客戶端超時

[英]GWT Eventservice: how to detect client side timeout on server side

我目前正在為大學的游戲項目進行編碼,我們正在使用GWT和GWT EventService。

在開始時,客戶進入主大廳。 偵聽器和UnlistenListener將被注冊到服務器。 UnlistenerListener注冊一個包含用戶名的UnlistenEvent。 觸發“用戶加入”。

在服務器端,我們列出了所有活動用戶(“加入的用戶”)。 當用戶關閉瀏覽器時,UnlistenEvent將在90秒后觸發。 其他用戶收到該事件,但是現在的問題是:如何在服務器端處理此超時? 該事件將由EventService本身觸發,並由其他客戶端接收,但是我不知道如何抓住這一時刻,並在服務器端手動進行處理,以將用戶從“活動用戶”列表中刪除。 服務器應在檢測到超時時觸發“用戶請假”之類的事件。

活動用戶列表保留在服務器端,因此我只想擁有一個刪除活動用戶列表中“超時”用戶的過程。

有人可以幫忙嗎?

現在,我們有了服務器的框架和HTML5 Websocket,可將信息推送到客戶端。

我建議使用Atmosphere ,或檢查此線程以獲取更多選擇。

我這樣解決了這個問題:

EventRegistry er = EventRegistryFactory.getInstance()。getEventRegistry();

public MessagesRpcServiceImpl() {
    super();

    theUserManager = UserManagerFactory.getInstance().getUserManager();
    theUserManager.getUserActivityScheduler().addTimeoutListener(new UserTimeoutListener() {

        @Override
        public void onTimeout(UserInfo arg0) {

            List<String> ids = new ArrayList<String>();

            for (Domain d : er.getListenDomains()) {
                ids.add(d.getName());
            }
            ids.remove("GLOBAL");


        }
    });
}

從庫文檔/ javadoc可以理解,這是客戶端之間的橋梁,並且沒有在服務器端進行監聽。 作為確認,javadoc僅引用客戶端代碼。

也許您可以修改該庫並向EventRegistry添加一個偵聽器,這似乎是偵聽事件流的好地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM