Chrome WebRTC屏幕共享扩展程序需要刷新

时间:2015-06-12 07:45:50

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

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

这是我的用例:

  1. 在正在进行的webrtc视频通话期间,如果一个人需要进行屏幕共享但没有扩展名,则在安装扩展程序后需要刷新页面。这会中断呼叫,两个人都需要再次加入呼叫。

  2. 我想使用javascript控制用户体验,因此不需要刷新。但如果我们不进行刷新,则html页面无法识别最近安装的扩展程序。

  3. 我见过很多关于此的开源代码,但没有一个与我的用例相似。他们假定在会话期间安装扩展程序。

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

    我无法理解他们是如何做到的,因为优步不是开源的。许多人说安装扩展后必须刷新。在这种情况下的任何帮助将受到高度赞赏。

    以下是使用内联安装安装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);
    }
    

3 个答案:

答案 0 :(得分:5)

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

我写了关于更改on my blog的内容,所以请查看更多详情,但重点是:

  

我们可以使用外部消息传递,而不是在chrome.runtime.sendMessage(extensionId, options, callback)上创建通信渠道,直接发送消息。我们可以使用chrome.runtime.onMessageExternal和后台脚本"externally_connectable": { "matches": [ "https://example.com/*" ] } ,而不是向内容脚本提取并传递给后台脚本(反之亦然)的窗口发送消息。这适用于其他解决方案没有的地方,因为在扩展安装时会立即加载后台脚本,而在页面加载时会注入内容脚本。

因此,基本上,扩展程序使用不同的权限:

chrome.runtime.sendMessage

另外一个API:

  • chrome.runtime.onMessageExternalwindow.postMessage
  • 相结合

而不是

  • window.addEventListener('message')chrome.runtime.connectA相结合。

至少有两个不同的网站https://apps.mypurecloud.comhttps://beta.talky.io与内联扩展程序安装进行屏幕共享,而根本没有重新加载。

答案 1 :(得分:0)

今天可能会有所帮助。如果您要在本地主机上运行Janus演示-只需在 https 上运行即可。

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

如果您已经安装了自己的Janus服务器:要使用https,则必须在Janus服务器配置中配置ssl证书:
janus.transport.http.jcfg-如果您在服务器定义中使用https
janus.transport.websockets.jcfg-如果您使用的是wss(并且不要忘记在其中启用安全的网络套接字)

答案 2 :(得分:-1)

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

我遇到了同样的问题,直到我放入html&lt; head&gt;标签......

<link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/[your-chrome-extension-id]" >

您的扩展程序清单还需要包含此标记所在的域。