1

目前,我的游戏是这样工作的。

用户使用 TCP 连接到服务器。此时,服务器尚未分配播放器对象并将其分配给 TCP 客户端对象。

当用户发送带有用户名和密码哈希的 LOGIN 消息时,服务器会检查数据库以查看所有内容是否相加,如果相加,则发送 LOGIN_ATTEMPT_RESULT 消息为 true。然后服务器分配一个玩家,然后向玩家发送大厅的状态,从那时起,当服务器从该用户那里收到消息时,它会处理它并进行通信。

我不保留会话 ID 或任何东西,因为它似乎没有必要。

这基本上是这样的游戏如何进行身份验证和通信,还是我错过了一些重要的东西?

谢谢

4

1 回答 1

4

保留会话 ID 很好,因为它使 TCP 数据包注入攻击(序列猜测)更加困难,并且即使 TCP 连接由于某种原因丢失,它也允许登录的连续性。这样,“会话”和“连接”是不同的,后者可以根据需要重新建立。此外,如果您扩展到多台机器,会话 ID 可以用作在主机之间传递的一种方式(将重新创建连接,但会话仍然存在)。最后,会话 ID 可以用作数据库键(同样,用于在服务器之间传递)。

如果您不需要这些,那么您可以放弃会话层。不过,似乎节省不了多少。

于 2012-06-01T03:21:56.597 回答