使用亚马逊负载均衡器的Socket.io,应该将哪些端口转发?

3
我有一些运行在亚马逊实例上的socket.io node.js服务器,当直接连接一个实例时,我的socket.io应用程序可以在几毫秒内连接和重新连接。然而,当我通过负载均衡器直接连接应用程序时,连接和重新连接速度要慢得多(需要5秒以上)。
我已经配置了负载均衡器以转发TCP端口80,以及我的node服务器监听的端口(端口3000)。socket.io是否需要其他端口才能正常运行?或者我的问题是由于端口之外的其他原因引起的?
谢谢。

你介意分享一下你如何进行负载均衡吗?你的Node.js实例前面有一个负载均衡器。Socket.io在另一个实例上,并通过负载均衡器访问Node.js?在这种情况下,你是否也进行了Socket.io的负载均衡? - twb
目前我的应用程序加载在单独的PHP服务器上,而不是负载均衡。socket.io服务器位于负载均衡器后面。我只需要将推送消息发送到客户端,而不是从客户端发送,因此客户端将被定向到可用的服务器,当我推送消息时,它们将被推送到所有实例/服务器。希望这解释得清楚一些? - SteveEdson
1个回答

1
我意识到这与端口或其他任何事情都无关。亚马逊负载均衡器会保持第一次重新连接尝试的开放状态,直到它超时,这意味着第一次连接在超时或重新连接之前等待60秒。我无法减少ELB的超时时间,这是AWS论坛上已知的问题,已经存在了几年时间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接