node.js - Apache 代理后面的 Sockjs/socketio 断开连接延迟

标签 node.js apache socket.io long-polling

我需要处理用户从我的 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/

相关文章:

java - 没有方案 :hdfs and Class org. apache.hadoop.DistributedFileSystem 的文件系统未找到

php - 如何使用 node.js 和 php?

node.js - Heroku 上的 Redis 连接错误 : 127. 0.0.1 而不是 REDIS_URL

apache - 通过 Internet(非本地主机)访问 XAMPP 中的多个站点

php - 使用 PHP exec() 在后台 Linux 服务器中运行脚本

java - Java 服务器上使用 Socket.IO 的“访问控制允许来源”

node.js - Socket.IO - 如何获取不同端点/房间的不同事件用户列表?

android - 当应用程序在 ionic 4 中关闭时,如何在后台使用套接字服务推送通知?

javascript - 全局变量在 forEach 循环体内显示为 "unexpected identifier"

angularjs - 如何使用证书进入 NWJS 和 Linux