2016-09-26 32 views
2

使用運行我的節點應用程序的2個Amazon EC2服務器正確安裝並正常工作。目前位於應用程序負載平衡器後面。跨多個Amazon EC2實例橫向擴展socket.io

我發射使用這樣

const ioredis = require('socket.io-redis');     
io = require('socket.io')(server); 

io.adapter(ioredis({ 
    host: 'localhost', 
    port: 6379 
})); 


io.to('roomName').emit('message', data); 

然而代碼套接字消息,使用socket.io發射消息時,該消息只從始發節點服務器廣播。

服務器1發出一個socket.io消息 - >連接到服務器1的任何人都會聽到該消息,但連接到服務器2的任何人都不會。

服務器2發出一個socket.io消息 - >連接到服務器2的任何人都會聽到該消息,但連接到服務器1的任何人都不會。

我需要幫助的是如何從服務器1發出socket.io消息並將其中繼到所有其他服務器以及可能通過在單獨的服務器上使用單個Redis實例?

OR

在另一臺服務器作爲發射器是服務器1和服務器2發送插槽,並從接收套接字消息。

不太確定哪個選項是最好的和正確的方式去,任何幫助將不勝感激。

回答

2

我設法通過創建第三臺服務器來解決問題,在其上安裝Redis並將所有其他服務器設置爲使用該單個redis實例。

現在套接字消息被廣播到所有服務器,而不管始發服務器。