gpt4 book ai didi

Java session 实现

转载 作者:搜寻专家 更新时间:2023-10-31 19:55:44 26 4
gpt4 key购买 nike

我正在开发一款多人在线游戏。我有以下问题:

当用户断开与服务器的连接时,他/她需要重新连接。在第一次连接时,在注册期间,注册模块会生成一个特殊的 ResponseDispatcher,它保存对连接 channel 的引用。但是如果用户注销,这个Channel就失效了。尽管我可以检测到问题并清理资源,但我必须将对注册模块和连接模块的引用存储到游戏模块中,以便在用户再次授权和重新连接时更新 channel 。这在模块之间产生了很多相互依赖性,并且很难维护。

我需要的是类似于 Servlet 容器中的 HttpSession 的东西,这样我就可以从服务器的所有模块中获取对 channel 和 session 资源的引用。

HttpSession在Servlet中是如何实现的?是存储所有JSESSIONID的全局hashmap,容器从中决定返回哪个attribute map?如果它是一个全局 sysmbol 表,它会影响性能吗(即使 hashMap 的时间是 O(1),可能会有 session 修改,所以它可能必须同步)?

附言。也许针对这种情况的一些设计模式建议也可以。

最佳答案

我建议尝试 Shiro

Shiro 可以处理Session Management在 servlet 容器之外。

你可能想用 EhCache 支持 Shiro提供适当的缓存,并在需要时提供 session 持久性(和负载平衡等)

关于Java session 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19541402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com