簡體   English   中英

在Node.js中,哪些存儲技術可用於實時游戲

[英]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不可用,則需要進行長輪詢等)。

之后,您需要RedisZeroMQ來縮放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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM