和大厅服务器(Hall Server)的Socket连接保持长连接还是短连接

流子
游戏开发领域优质创作者
博客专家认证
2008-08-25 09:59:18
这两天又遇到一个问题,就是当用户在登录服务器验证通过,和大厅服务器(Hall server)连接后,展示那个目录树房间人数后,是马上断开还是一直保持连接?我目前做的是保持长连接,我分析了两种连接的利弊:
1.和大厅一直保持长连接,优点:每次去展开节点时就不需要再去和大厅服务器试图连接,缺点:和大厅服务器保持一个长连接,这个连接的使用频率其实是非常低的,并且这样会导致每个客户端至少要保持两个和服务器的连接(一个和大厅,一个和游戏逻辑服务器)
2.和大厅一直保持长连接,只有当用户每次去展开节点时去连接,取得房间人数,优缺点反之。

...全文
174 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰思雨 2008-08-28
  • 打赏
  • 举报
回复
判断用户是否是在线状态,一般由登录验证服务器来做,和大厅服务器没有太大关系。
先要把流程弄清楚。
1.客户端先判断是否是登录状态,如果不是,就去登录验证服务器上去登录验证;
如果是登录状态,就去查看令牌是否到期,如果到期了,就去验证服务器上获取新的令牌。
2.客户端到登录验证服务器上做身份验证的时候,如果验证通过(登录成功),登录验证服务器会发给客户端一个具有时效限制的令牌。
3.当客户端持有有效的令牌时,就可以去大厅服务器上面获取数据。
一般,令牌内容会牵扯到生成时间、有效时长、以及权限或角色等等的信息,通过一定的加密方式后,互相传递。
4.除了登录验证服务器以外的其他服务器,只对令牌做验证(注意,令牌不是针对某个用户做验证,而是针对时效和权限、角色等做验证)。
只有持有有效令牌的客户端,才可以访问服务器。如果令牌的加密方式、时效、或者权限角色有一个不正确,就不让其访问服务器的数据。
5.登录验证服务器,判断客户端状态的方法,有很多。(前面已经讨论过用长连接还是短连接了)
长连接可以通过连接是否断开来判断;短连接可以通过超时(和长连接的维持连接包类似的“心跳同步”技术)来判断。
流子 2008-08-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 preferme 的回复:]
短连接
[/Quote]
那么当客户端突然断电。死机了怎么通知服务端该用户已经下线?
冰思雨 2008-08-25
  • 打赏
  • 举报
回复
短连接

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧