2012-07-22 52 views
3

我嘗試縮放我的socket.io應用程序,並嘗試在我的服務器上運行多個進程。多個socket.io進程共享相同的端口?

我使用Redis的商店,而不是內存存儲如下所述:​​

我的服務器偵聽端口8090: VAR IO =需要( '在/ usr/local/lib目錄/ node_modules/socket.io')。聽(8090);

當我開始第二個過程中,我得到了使用錯誤的地址: 警告 - 錯誤提出:錯誤:聽EADDRINUSE

什麼是最好的方式來處理這個問題? 每個進程的端口和負載均衡器來區分它們?

還是有更好的解決方案嗎?

回答

6

爲此,我使用node-http-proxy,並根據所請求的URL將流量路由到內部端口。下面是我用來路由請求的一個非常簡明的例子。在我的特別設置

var httpProxy = require('http-proxy'); 

var httpOptions = { 
    router: { 
     'domain1.com/foo': 'localhost:3001', 
     'domain1.com/bar': 'localhost:3002', 
     'domain2.com/baz': 'localhost:3003', 
    } 
}; 

var httpServer = httpProxy.createServer(httpOptions); 
httpServer.listen(80); 

更多細節可以在這個問題上找到:How to use vhosts alongside node-http-proxy?

相關問題