我需要处理用户从我的 sockjs 应用程序断开连接的问题在 xhr-polling 模式下运行。当我连接到本地主机时,一切都按预期进行。当我将 apache 放在 nodejs 和浏览器之间时,我在关闭浏览器和 nodejs 内的断开连接事件之间有大约 20 秒的延迟。我的 apache 代理配置如下:
<Location />
ProxyPass http://127.0.0.1:8080/
ProxyPassReverse http://127.0.0.1:8080/
</Location>
文件的其余部分是默认的,你可以看到它here .我尝试使用 ttl=2 和 timeout=2 选项,但要么没有任何变化,要么我每 2 秒重新连接一次而没有关闭浏览器。我怎样才能减少额外的断开连接超时,引入,但 apache,在它的默认设置中?
最佳答案
您的 Apache 服务器可能配置为使用 HTTP Keep Alive这将使持久连接保持打开状态。在那种情况下,我会尝试禁用 KeepAlive
,或降低 Apache 配置中的 KeepAliveTimeout
设置,看看是否可以解决问题。
如果这不起作用,我还会查看 netstat
并查看每个套接字的状态并开始根本原因分析。这chart给出的是 TCP 状态机,可以告诉您每个连接的位置。 Wireshark 还可以为您提供一些有关正在发生的事情的信息。
关于node.js - Apache 代理后面的 Sockjs/socketio 断开连接延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44086586/