1

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

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

视图的顺序是:LoginView-> HomeView -> LobbyView

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

如果第一个用户登录游戏并使用聊天功能直接加入大厅,另一个用户也这样做,他们可以互相聊天-所以一切看起来都很好......

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

4

1 回答 1

1

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

——让弗朗索瓦

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

于 2012-08-29T20:31:34.697 回答