![](/img/trans.png)
[英]Socket.io emits not always recieved on Node.js + Redis + Heroku (multiple dynos) environment
[英]Using Node.js + Socket.io on Heroku with multiple dynos
我正在嘗試在Heroku上使用Node / SocketIO構建實時多人游戲,並且不確定如何在共享SocketIO連接數據方面處理多個動態變化。
例如:
在單動態環境中,這將相對簡單。 當玩家A執行一個動作時,它只會被發送給玩家B。當存在多個測功時,這將如何工作?
由於您無法選擇(或知道)您要連接到哪個Heroku測功機( web.1
, web.2
或web.n
),因此您將需要找到另一種方式來交流游戲中許多變化測功機。
一種方法是另外使用分布式消息傳遞服務來傳達游戲中的更改。 使用分布式的publush-subscribe架構,玩家A可以將游戲中的動作發送到dyno 1,然后將其放入隊列。
然后,當玩家B加入游戲時,Dyno 2可以訂閱游戲隊列。 現在,Dyno 2將從游戲中接收動作,然后能夠通過套接字將其發送給玩家B。
盡管這種方法的延遲不會像單個高性能服務器那樣低,但是如果您想獲得擴展和冗余的好處,可能需要這樣做。
在Heroku上,您可以考慮將Redis用於此目的,因為Heroku提供了托管版本,並且對於低延遲應用程序表現良好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.