Firebase - 当 websockets 被公司代理/防火墙阻止时,是否有强制长轮询的标志?

Dea*_*ean 2 javascript websocket firebase angularfire

我正在开发一个简单的企业 AngularJS 应用程序,并计划在后端使用 Firebase。

我必须支持的浏览器是 IE8 和 Chrome(最新)。

我已经设法修复了前端中所有与 IE 相关的怪癖,并且可以成功地从我的 Firebase 检索数据。由于 IE8 不支持 WebSockets,我假设它使用的是长轮询。(这在性能方面很好,该应用程序非常简单,只需提取/更新两到三个数据)。

矛盾的是,我在 Chrome 中反复看到以下错误,并且无法连接到 Firebase。我假设这是由于公司网络的防火墙/代理。

WebSocket connection to 'wss://xxx.firebaseio.com/.es?v=5' failed: WebSocket is closed before the connection is established.
Run Code Online (Sandbox Code Playgroud)

我无法控制防火墙/代理,所以我的问题是我是否可以强制 Chrome 也使用长轮询,在创建 Firebase 引用时使用某种配置标志?

我混合使用 Angularfire 和直接 Firebase。该应用程序在 IE 中运行良好,因此我的代码似乎没有任何问题。(也是简单的测试脚本遇到同样的问题)

更新:该应用程序在 Chrome 中不起作用(因此是我的问题),所以这可能是我应该使用 Firebase 提出的错误,但无论强制长轮询的方法(大概)都可以解决我的问题。

小智 5

您可以使用Firebase.INTERNAL.forceLongPolling();强制长轮询Firebase.INTERNAL.forceWebSockets();来强制网络套接字

  • 注意:我认为当前版本的 SDK 中这将是“firebase.database.INTERNAL.forceLongPolling()”。 (3认同)