多个socket.io进程共享同一个端口?
Posted
技术标签:
【中文标题】多个socket.io进程共享同一个端口?【英文标题】:Multiple socket.io processes share the same port? 【发布时间】: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
处理此问题的最佳方法是什么? 每个进程一个端口和一个负载均衡器来区分它们?
或者有更好的解决方案吗?
【问题讨论】:
【参考方案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?
【讨论】:
以上是关于多个socket.io进程共享同一个端口?的主要内容,如果未能解决你的问题,请参考以下文章
socket.io 客户端可以连接到两个不同的服务器/端口吗?
带有 nginx 负载平衡器问题的 Socket.IO 集群