gpt4 book ai didi

html - 如何解耦实时游戏架构

转载 作者:搜寻专家 更新时间:2023-10-31 23:48:46 25 4
gpt4 key购买 nike

我有一个在 Node 后端运行的实时 HTML5 canvas 游戏。玩家通过 Websocket (socket.io) 连接。问题是有时我需要部署新代码(例如修补程序)并重新启动服务器,但我不想断开播放器。

我的想法是将 websocket 服务器和应用程序服务器分成可单独部署的组件,并在中间添加一个消息队列来解耦这两个组件。这样,如果应用程序服务器正在重新启动,则在消息聚集时只会有短暂的延迟,但不会丢失任何内容。这是一个好策略吗?有替代方案吗?

最佳答案

基于 websocket 的应用程序很可能会在用户没有注意到任何事情的情况下重新启动(my chat server for example 就是这种情况)。

要做到这一点,解决方案不是隔离 websocket 应用程序并且永不重启。事实上,这将是非常乐观的(你确定你可以确保它的 API 永远不会改变吗?)。

一个解决方案是

  1. 确保客户端在断开连接时重新连接(如果您使用 socket.io 进行网络套接字,这是标准做法)
  2. 让服务器在客户端发起重新连接时向客户端询问其 ID(或 session ID)
  3. 持久化应用程序的状态。这通常是通过数据库完成的。如果您的服务器除了客户端之间的队列之外没有其他状态(这不太可能),那么您可能会寻找现有的持久队列实现或在快速本地存储(想到 redis)上构建自己的队列

关于html - 如何解耦实时游戏架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22246172/

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