我尝试扩展我的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
处理此问题的最佳方法是什么? 每个进程的端口和负载均衡器以区分它们吗?
或者有更好的解决方案吗?
答案 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?