【问题标题】:Chrome WebRTC Screen Sharing Extension requires refreshChrome WebRTC 屏幕共享扩展需要刷新
【发布时间】:2015-06-12 07:45:50
【问题描述】:

Chrome 已经为 WebRTC 屏幕共享引入了扩展程序的使用。在这种情况下,每个域都必须具有扩展程序,以便人们安装扩展程序以便使用 webrtc 共享屏幕。

这是我的用例:

  1. 在进行中的 webrtc 视频通话期间,如果有人需要进行屏幕共享并且没有扩展程序,则在安装扩展程序后需要刷新页面。这会中断通话,双方都需要重新加入通话。

  2. 我想使用 javascript 控制用户体验,以便不需要刷新。但如果我们不刷新,html 页面将无法识别最近安装的扩展。

我已经看过很多关于这方面的开源代码,但没有一个有与我类似的用例。他们假定在会话期间安装扩展。

但是,我看过 www.uberconference.com 并且他们有类似的用例。我尝试在实时通话期间安装屏幕共享扩展程序,它不需要刷新页面,也没有中断通话。它在安装扩展程序后立即进行屏幕共享。

我无法理解他们是如何做到的,因为 uber 不是开源的。很多人说安装扩展后必须刷新。在这种情况下的任何帮助将不胜感激。

这是我使用内联安装安装 chrome 扩展的方法:

$scope.installExtension= function(){

  !!navigator.webkitGetUserMedia
  && !!window.chrome
  && !!chrome.webstore
  && !!chrome.webstore.install &&
  chrome.webstore.install('https://chrome.google.com/webstore/detail/<some-id>',
    successInstallCallback,
    failureInstallCallback
  );

};

function successInstallCallback() {
  //location.reload();
}
function failureInstallCallback(error) {
  alert(error);
}

【问题讨论】:

  • 下载应用程序并打开扩展文件夹并查看源代码。
  • 我应该下载哪个应用程序?

标签: google-chrome google-chrome-extension webrtc getusermedia


【解决方案1】:

这是我们最近在getScreenMedia 中更改的内容。查看pull request 了解我们是如何做到的:

我写了关于 on my blog 的更改,因此请查看此处了解更多详细信息,但重要的部分是:

我们可以使用外部消息传递,而不是在chrome.runtime.connect 上创建通信通道并直接发送消息。我们可以使用chrome.runtime.sendMessage(extensionId, options, callback) 和后台脚本chrome.runtime.onMessageExternal,而不是向窗口发布消息,该消息被内容脚本拾取并传递给后台脚本(反之亦然)。这适用于其他解决方案不适用的情况,因为后台脚本会在扩展安装后立即加载,而内容脚本会在页面加载时注入。

所以,基本上,扩展使用不同的权限:

"externally_connectable": {
  "matches": [
      "https://example.com/*"
  ]
}

还有一个不同的 API:

  • chrome.runtime.sendMessage 结合chrome.runtime.onMessageExternal

而不是

  • window.postMessagewindow.addEventListener('message')chrome.runtime.connect 结合使用。

至少有两个不同的站点 https://apps.mypurecloud.comhttps://beta.talky.io 使用内联扩展安装进行屏幕共享,完全无需重新加载。

【讨论】:

    【解决方案2】:

    这可能对今天有所帮助。如果您在本地主机上运行 Janus 演示 - 只需通过 https 运行它。

    如果您通过 http 运行它:getDisplayMedia 函数将不会被声明(例如在 Chrome 中),然后 Janus 会要求您安装插件。

    如果您安装了自己的 Janus 服务器:要使用 https - 您必须在 Janus 服务器配置中配置 ssl 证书:
    janus.transport.http.jcfg - 如果您在服务器定义中使用 https
    @987654323 @ - 如果您使用的是 wss(并且不要忘记在其中启用安全 web-socket)

    【讨论】:

      【解决方案3】:

      你看过 Chrome 扩展内联安装... https://developer.chrome.com/webstore/inline_installation

      在我放入 html

      标签之前,我遇到了同样的问题...
      <link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/[your-chrome-extension-id]" >
      

      您的扩展清单还需要包含此 head 标签所在的域。

      【讨论】:

      • 这没有回答问题。
      猜你喜欢
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多