Java 会话处理问题-HttpSession和Websockets创建的会话

Java 会话处理问题-HttpSession和Websockets创建的会话,java,session,websocket,Java,Session,Websocket,我希望有人能回答我的问题。 在我们的gwt webapp中,我们通常使用HttpSession来创建用户会话。因此,如果有人想登录我们的游戏,我们可以通过HttpSession设置一个会话 public void setSessionID(String id) {HttpSession httpSession = getThreadLocalRequest().getSession(true); httpSession.setAttribute("id", id); } 意见的次序如下: Lo

我希望有人能回答我的问题。 在我们的gwt webapp中,我们通常使用HttpSession来创建用户会话。因此,如果有人想登录我们的游戏,我们可以通过HttpSession设置一个会话

public void setSessionID(String id) {HttpSession httpSession = getThreadLocalRequest().getSession(true); httpSession.setAttribute("id", id); }
意见的次序如下: LoginView->HomeView->LobbyView

现在,当他进入大厅时,他将通过websocket连接与聊天室连接。现在的问题是,我认为websocketConnection还将创建一个sessionObject。 在码头v-8.1.2.v20120308上测试应用程序显示:

如果第一个用户登录游戏并使用聊天功能直接加入大厅,而另一个用户也使用同样的方式,那么他们可以彼此聊天-因此一切看起来都很好

但是,如果两个用户在有人加入大厅之前同时登录游戏,然后加入大厅,那么进入大厅的第二个用户将获得第一个用户的所有参数,这样两个用户都具有相同的身份。。。我不知道那里出了什么问题。 第一个用户的websocketSession似乎覆盖了第二个玩家登录的httpSession。。。
感谢您提供的解决方案或想法,这可能是一个问题。

这是Jetty中的一个bug,它在握手后清除/破坏了一切。解决方案是在此时关闭会话,并用该假会话包装请求。您还可以使用Atmosphere框架[1],它可以透明地为您修复(以及更多)

--Jeanfrancois


[1]

这是Jetty中的一个bug,它会在握手后清除/销毁所有内容。解决方案是在那一刻关闭会话,并用假会话包装请求。您还可以使用Atmosphere框架[1],它可以透明地为您修复(以及更多)

--Jeanfrancois

[1]