【问题标题】:Firefox does not gather ICE candidates unless the window is in focus?除非窗口处于焦点,否则 Firefox 不会收集 ICE 候选?
【发布时间】:2016-02-24 14:43:30
【问题描述】:

我正在 Firefox 中测试我的 WebRTC 应用程序,似乎 Firefox 不会收集 ICE 候选者,除非且直到 Firefox 窗口成为焦点?!在同一台机器上使用两个单独的浏览器窗口时,其中一个显然总是不是最前面的窗口。日志告诉我,Firefox 在它应该开始收集 ICE 候选者的位置停止,直到我明确单击窗口使其成为焦点,此时开始候选者收集并在建立连接后不久。我可以在进程开始后随时切换窗口,它会成功完成;但是窗口显然必须在过程开始时处于焦点。

Chrome 上没有这样的行为,它总是收集处于任何状态的候选人。

这是一种已知行为吗?这是有原因的,还是一个错误?

OS X El Cap 上的 Firefox 44.0.2

【问题讨论】:

  • 奇怪,它在 Firefox 44.0.2 中对我来说很好,this fiddle 在两个选项卡/窗口中打开。我也在 OSX El Cap 上。那个小提琴适合你吗?
  • 我想您的应用程序/框架中可能存在事件处理中的错误,这可能会导致这种情况。
  • @jesup 唯一可以解释的是,如果 Object.defineProperty 定义的设置器不会在后台触发。有什么想法吗?我得再测试一下……
  • 它在 Firefox 44.0.2 和 Chrome 之间的同一台机器上对我有用,即使 Chrome 是焦点。
  • @jib 这个小提琴确实对我有用。我会更仔细地研究这个......

标签: firefox webrtc


【解决方案1】:

Firefox 中隐藏的选项卡或窗口无法打开相机。知道这一点,我个人觉得更安全。

即使您选择了“始终共享”,在您聚焦窗口之前,相机也不会激活。

从 cmets 看来,这就是您的情况。

相比之下,this fiddle 在两个选项卡中都可以正常工作,因为只有用户按下按钮的页面(发送方)才能访问相机。

This code section intentionally left blank.

【讨论】:

    【解决方案2】:

    没关系,不是 ICE 候选者,而是 getUserMedia 阻止,除非 Firefox 是活动窗口。我的代码的异步特性使得这一点不像应有的那么明显。这种行为显然是设计使然,并在此处进行了描述:https://bugzilla.mozilla.org/show_bug.cgi?id=1195654

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-07
      • 2010-12-04
      • 2019-12-21
      相关资源
      最近更新 更多