2012-08-29 41 views
1

我希望有人對我的問題有一個答案。 在我們的gwt-webapp中,我們通常使用HttpSession來創建一個用戶會話。所以,如果有人想登錄到我們的遊戲,我們通過HttpSession的會話處理問題 - HttpSession和會話由Websockets創建

public void setSessionID(String id) {HttpSession httpSession = getThreadLocalRequest().getSession(true); httpSession.setAttribute("id", id); } 

設置會話的意見的順序是: LoginView-> HomeView - > LobbyView

現在進入大廳時,他將通過websocket連接與聊天連接。現在的問題是,websocketConnection也會創建一個sessionObject,我認爲。 在jetty上測試應用程序v-8.1.2.v20120308顯示:

如果第一個用戶登錄遊戲並直接使用chatfunction加入大廳,而另一個用戶以同樣的方式加入,他們可以相互聊天 - 所以一切看起來都很好......

但是如果兩個用戶在某人加入大廳之前同時登錄遊戲,然後加入大廳,那麼第二個進入大廳的人將獲得所有參數已經進入的第一個用戶,以便這兩個用戶具有相同的身份...不知道那裏出了什麼問題。 看來,第一個用戶的websocketSession覆蓋httpSession從第二個玩家的登錄... 感謝任何解決方案或想法這可能是什麼問題。

回答

1

這是Jetty中的一個錯誤,它在握手後清除/銷燬所有內容。解決方案是在那個時候關閉會話並用該假會話包裝請求。您還可以使用大氣框架[1],其透明地解決了你(和更多

- Jeanfrancois

[1] https://github.com/Atmosphere/atmosphere