簡體   English   中英

在Heroku上使用Node.js + Socket.io進行多個測功

[英]Using Node.js + Socket.io on Heroku with multiple dynos

我正在嘗試在Heroku上使用Node / SocketIO構建實時多人游戲,並且不確定如何在共享SocketIO連接數據方面處理多個動態變化。

例如:

  1. 我有2個Heroku dynos,每個都運行Node + SocketIO
  2. 玩家A主持游戲,而dyno 1處理該連接
  3. 玩家B嘗試加入同一游戲,但是由於使用了Heroku路由器,dyno 2最終處理了該連接。
  4. 游戲中的動作需要實時發生,因此玩家A執行動作時,玩家B需要立即查看該動作的結果。

在單動態環境中,這將相對簡單。 當玩家A執行一個動作時,它只會被發送給玩家B。當存在多個測功時,這將如何工作?

由於您無法選擇(或知道)您要連接到哪個Heroku測功機( web.1web.2web.n ),因此您將需要找到另一種方式來交流游戲中許多變化測功機。

一種方法是另外使用分布式消息傳遞服務來傳達游戲中的更改。 使用分布式的publush-subscribe架構,玩家A可以將游戲中的動作發送到dyno 1,然后將其放入隊列。

然后,當玩家B加入游戲時,Dyno 2可以訂閱游戲隊列。 現在,Dyno 2將從游戲中接收動作,然后能夠通過套接字將其發送給玩家B。

盡管這種方法的延遲不會像單個高性能服務器那樣低,但是如果您想獲得擴展和冗余的好處,可能需要這樣做。

在Heroku上,您可以考慮將Redis用於此目的,因為Heroku提供了托管版本,並且對於低延遲應用程序表現良好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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