繁体   English   中英

会话处理问题-Websockets创建了HttpSession和一个Session

[英]problems with session handling - HttpSession and a Session been created by Websockets

我希望有人能回答我的问题。 在我们的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中的错误,可在握手后清除/销毁所有内容。 解决方案是在那时关闭会话,并用该假会话包装请求。 您还可以使用Atmosphere Framework [1],它可以为您透明地解决此问题(甚至更多)。

-让弗朗西斯(Jeanfrancois)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM