【问题标题】:Multiple socket.io processes share the same port?多个socket.io进程共享同一个端口?
【发布时间】:2012-07-21 03:36:59
【问题描述】:

我尝试扩展我的 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);

当我启动第二个进程时,我收到地址正在使用错误: 警告 - 引发错误:错误:监听 EADDRINUSE

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

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

【问题讨论】:

    标签: node.js socket.io scalability


    【解决方案1】:

    为此,我使用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?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 2019-04-02
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多