首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Node.js中,哪些存储技术可用于实时游戏

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

Stack Overflow用户
提问于 2011-11-24 10:11:48
回答 3查看 631关注 0票数 0

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

在我的新版本游戏中,我使用的是node.js (和web-sockets),我想要避免像这样的机制,我必须不断地搜索数据库来寻找是否有更新。我想知道是否有其他方法来存储重要的游戏状态信息,而不是使用数据库。

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

干杯,乔希

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-24 16:48:43

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

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

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

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

票数 4
EN

Stack Overflow用户

发布于 2011-11-24 10:44:13

你想要一个可以推送数据的数据库。

Redis和couch就是这样的例子。

而不是在数据库中搜索更改(慢得要死),而是让数据库告诉您“嘿,发生了更改”

然后,您只需通过socket.io将该更改广播到所有连接的客户端。

票数 3
EN

Stack Overflow用户

发布于 2011-11-24 10:40:38

他想要仓库..。MongoDB将是一个很好的选择。如果没有事务要求的话。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8251479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档