【问题标题】:Socket.io keeps polling to establish connectingSocket.io 不断轮询建立连接
【发布时间】:2018-04-09 09:50:10
【问题描述】:

我正在尝试设置一个使用 Socket.io 的消息传递应用程序。

目前,我们在设置应用程序时遇到了问题,中间有一个反向代理。当我们在本地运行我们的应用程序时,我们没有问题,但是当将反向代理放在两者之间时,它会继续在 socket.io 上进行轮询。所以它一直在轮询,没有数据流过长轮询连接。

以前有人遇到过这种情况吗?我们错过了哪些类型的配置?

编辑 1:

这是来自套接字 io 客户端记录器的屏幕截图

这是它不断轮询的网络选项卡的屏幕截图:

编辑 2:

我们只在polling 传输模式下使用socket.io。所以我们不会尝试建立真正的 websocket 连接。

【问题讨论】:

  • 您的反向代理使用什么?您可能已经尝试过,但这里有一个使用 nginx 配置 socket.io 的教程:nginx.com/blog/nginx-nodejs-websockets-socketio
  • 我们正在使用 Akamai。 Akamai 将流量从 domainA 路由到我们的服务器域。
  • 我们可以在代码方面提供更多帮助
  • 不确定我在看什么,因为我从未使用过 Akamai,但这似乎对您有帮助:community.akamai.com/docs/DOC-8637-websocket-support
  • 谢谢!因此,我们不认为 Akamai 不支持 websocket 连接,除非进行特殊升级。所以它只能通过polling 传输。奇怪的是,当我们在 Akamai 中有一条默认规则说将所有不匹配的流量路由到我们的域到我们的服务器时,它就可以与轮询一起使用。但是当我们禁用这条规则时,它就不再起作用了......我们进入了这个轮询循环

标签: javascript node.js socket.io reverse-proxy


【解决方案1】:

事实证明,这与 Akamai 中的 socket.io 请求缓存有关。在路由规则中,需要声明明确的无缓存行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 2017-07-17
    • 2014-08-02
    相关资源
    最近更新 更多