在 Node.js 中,哪些存储技术可用于实时游戏

Jos*_* Mc 0 javascript database websocket node.js

我计划尝试使用 html5 和 node.js 进行实时游戏开发。我之前制作了一个游戏,使用轮询来模拟游戏中的实时更新。我的实时游戏将使用 AJAX 来保持游戏在多个客户端之间同步。基本上,每当游戏状态发生变化时,我都会更新相关数据库行中的 Last_updated 字段。每当客户端轮询服务器时,它都会检查自上次轮询返回任何相关更新以来发生的任何更新(通过将先前轮询时间与 last_updated 字段进行比较来执行此操作)。

在我的游戏新版本中,我使用了node.js(和网络套接字),我想避免这样的机制,我必须不断搜索数据库以查找是否有更新。我想知道是否有其他方法可以存储重要的游戏状态信息,而无需以这种方式使用数据库。

我真的希望能够设置事件在游戏状态更改时在所有客户端上触发,而不必不断检查更改,因为这将节省大量的处理/查询。我真的不知道在一个客户端上触发的事件是否可以发送到也连接到我的 node.js 运行服务器的其他客户端。我一直使用数据库来完成这类事情,但我真的希望还有其他更好的选择?

干杯,乔什

ale*_*lex 5

首先,您需要像Socket.IO这样的东西来处理 websockets(如果 WS 不可用,则需要长轮询等)。

之后,您需要RedisZeroMQ来扩展 Socket.IO(我所说的扩展是指多个进程,甚至多个服务器)。您还可以使用CouchDB_changes 事件来实现这一点。(这可以让您知道何时发生插入/更新)

至于存储引擎,我建议您使用 MongoDB(非常适合写入,这就是您所需要的)或 Redis(从内存读取)和 CouchDB(用于写入)的组合。

它们都有 Node.js 库,您可以在模块页面https://github.com/joyent/node/wiki/modules上查看它们,也可以在它们的网站(在 dbs 网站上)上找到它们。