多个socket.io进程共享同一个端口?

时间:2012-07-22 19:39:56

标签: node.js socket.io scalability

我尝试扩展我的socket.io应用程序并尝试在我的服务器上运行多个进程。

我使用redis存储而不是内存存储,如下所述:https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO

我的服务器侦听端口8090: var io = require('/ usr / local / lib / node_modules / socket.io')。listen(8090);

当我开始第二个过程时,我收到一个正在使用的地址错误:    warn - 引发错误:错误:听EADDRINUSE

处理此问题的最佳方法是什么? 每个进程的端口和负载均衡器以区分它们吗?

或者有更好的解决方案吗?

1 个答案:

答案 0 :(得分: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?