2016-04-30 36 views

回答

0

我昨天問過類似的問題,似乎你也與我相似,這裏就是我要去實現。

既然你將有將要在不同端口上運行多個實例,他們將不能夠直接相互交談和打破的WebSocket功能。

似乎there are multiple solutions to this(粘性會話使用VS Redis的的發佈/訂閱功能),我選擇了Redis的。有一個稱爲socket.io-redis的模塊。你也需要emitter module,它在這裏。

如果你選擇這條路線,無論你有多少服務器,一臺服務器上(多臺服務器上有多個實例)或多個實例上運行你的應用程序,它會沒有感謝Redis的問題發揮作用。

至少這是我所知道的現在,一直在尋找了幾天,都沒有嘗試過。

更何況,你可以使用Nginx的負載平衡,如下圖所示。 (從socket.io文檔複製)

upstream io_nodes { 
    ip_hash; 
    server 127.0.0.1:6001; 
    server 127.0.0.1:6002; 
    server 127.0.0.1:6003; 
    server 127.0.0.1:6004; 
} 
+0

最後結束了創建在bootstrap.js另一個的httpserver 變種customAppServer = http.createServer(sails.hooks.http.app); var customAppSocket = io(customAppServer); customAppServer.listen('3001'); module.exports.customAppSocket = customAppSocket; (連接',函數(套接字){ sails.config.customRoutes.setListeners(套接字); socket.emit('connected',{hello:'world'}); }); – Upasana

相關問題