[英]In Node.js what storage technologies are available for real time games
我打算使用html5和node.js进行实时游戏开发的实验。 我以前使用轮询来模拟游戏中的实时更新来制作游戏。 我的实时游戏将使用AJAX来使游戏在多个客户端之间保持同步。 基本上,只要游戏状态发生变化,我都会在有关的数据库行中更新字段last_updated。 每当客户端轮询服务器时,它将检查自上次轮询返回任何相关更新以来发生的任何更新(通过将先前的轮询时间与last_updated字段进行比较来进行此操作)。
在游戏的新版本中,我改用node.js(和网络套接字),我想避免使用这种机制,我必须不断地对数据库进行搜索以查找是否有更新。 我想知道是否有其他方法可以存储重要的游戏状态信息,而无需在这种方式下使用数据库。
我真的很希望能够设置事件在更改游戏状态时在所有客户端上触发,而不必不断检查更改,因为这样可以节省大量的处理/查询。 我真的不知道是否可以将一个客户端上触发的事件发送到也连接到运行我的node.js服务器的其他客户端。 我一直在使用数据库进行此类操作,但我真的希望还有其他更好的选择吗?
干杯,乔希
首先,您需要诸如Socket.IO之类的东西来处理websocket(如果WS不可用,则需要进行长轮询等)。
之后,您需要Redis或ZeroMQ来缩放Socket.IO(通过缩放,我的意思是多个进程甚至多个服务器)。 您也可以为此使用CouchDB的_changes事件 。 (这可以让您知道何时发生插入/更新)
至于存储引擎,我建议您使用MongoDB(非常适合写操作,这就是您所需要的)或Redis(从内存读取)和CouchDB(用于写操作)的组合。
它们都具有Node.js库,您可以在模块页面https://github.com/joyent/node/wiki/modules上检出,也可以在其网站上(在dbs网站上)找到它们。
您需要一个可以推送数据的数据库。
Redis和沙发就是这样的例子。
而不是在数据库中搜索更改(如地狱般缓慢),而是让数据库告诉您“发生更改,您好”
然后,您只需通过socket.io将更改广播给所有连接的客户端即可。
他想要存储... MongoDB将是一个不错的选择。 如果没有交易要求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.