我有一个特定的问题,即我使用WebRTC(语音和视频) 我想在网站上的网页之间保持连接/语音/视频流。我以为我可以使用共享的Web worker在后台运行?
任何指导都会很棒。我查看了其他帖子,但他们已经很老了,想知道是否有人有任何,更多,最新的信息或方法可以解决这个问题?
更新 共享Web Workers是解决此问题的错误方法。服务工作者是在网页终止后维护的前进方式。
答案 0 :(得分:2)
在页面加载之间保持webRTC连接活动似乎是一种罕见的用例。通常,您开始通话并保持在单个页面上。我想如果您想在网站上嵌入像webRTC小部件这样的客户支持并让该小部件通过单个域下的页面导航跟踪用户,那么这是有意义的。
我不认为保存/重复使用blob URL会让您重新连接页面重新加载以解决安全问题/劫持潜力。
IceRestart约束可能有所帮助。显然,您可以将SDP信息保存到本地存储,重用协商的SDP,然后调用IceRestart快速重新连接。
如第3节所述,提名的ICE候选对是 在SDP提供/应答程序期间进行交换,这是保持的 通过JavaScript。 JavaScript可以保存SDP信息 应用程序服务器或浏览器本地存储。当一个页面 重新加载已经发生,一个新的JavaScript将被重新加载,这将 创建一个新的PeerConnection并检索已保存的SDP信息 包括之前提名的候选对。然后是JavaScript 可以通过发送setLocalDescription()来请求以前的资源, 其中包括已保存的SDP信息。而不是重新启动ICE 程序没有额外的动作提示,新的JavaScript应该是 发送一个updateIce(),表明它已经发生了因为 页面重新加载。如果ICE代理然后可以分配先前的 对于新的JavaScript资源,它将使用之前提名的 第一次连接检查的候选对,如果成功的话 ICE代理会将其标记为已选中。 ICE代理现在可以 使用此候选对发送媒体,即使它正在运行 常规提名模式。
https://bugs.chromium.org/p/webrtc/issues/detail?id=979
http://tools.ietf.org/html/draft-li-rtcweb-ice-page-reload-02