无法通过移动3gnetworking访问服务器发送的事件

我遇到Server Sent事件的问题。 我的terminal在移动3Gnetworking上不可用。

我所观察到的一个观点是,像我的移动networking上提供的https端点一样。

https://s-dal5-nss-32.firebaseio.com/s1.json?ns=iot-switch&sse=true

但是当代理通过使用nginx并通过http访问(无ssl)时,相同的端点在我的移动networking上不可用。

http://aws.arpit.me/live/s1.json?ns=iot-switch&sse=true

尽pipe这在我的家庭/办公室宽带networking上是可用的。 仅在我的移动3gnetworking上造成问题。 任何想法可能会发生什么?

我读到,移动networking使用破碎的透明代理,可能会造成这种情况。 但是这是通过HTTP。

任何帮助,将不胜感激。

我怀疑移动网络正在强制使用HTTP代理,试图在将文件转发给浏览器之前缓冲文件。 缓冲将使SSE消息在缓冲区中等待。

有了SSE,有一些技巧可以解决这样的代理问题:

  • 发送消息后关闭服务器上的连接。 代理将观察“文件”的末尾,并转发所有缓存的消息。

    这相当于长时间轮询,所以不是最优的。 为了避免降低所有客户端的性能,只有在检测到这种情况时才可以这样做,例如客户端连接时总是发送欢迎消息。 客户端应该期望这个消息,如果消息没有及时到达,通过AJAX请求向服务器报告问题。

  • 在消息之前或之后,在SSE注释中发送4到16KB之间的数据。 一些代理具有有限大小的缓冲区,这将溢出缓冲区强制消息。

  • 使用HTTPS。 这绕过了所有的第三方代理。 如果您可以使用HTTPS,这是最好的解决方案。