A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://developer.mozilla.org/zh-CN/docs/Web/API/WebRTC_API/Session_lifetime below:

WebRTC 介绍 - Web API

信令是在两个设备之间发送控制信息以确定通信协议、信道、媒体编解码器和格式以及数据传输方法以及任何所需的路由信息的过程。关于 WebRTC 的信令流程最重要的一点是:信令在规范中并没有定义。

你可能会想,为什么这么一个对于建立 WebRTC 连接至关重要的基本过程居然没有定义在规范里?答案很简单:由于两个设备无法直接相互联系,规范无法预测 WebRTC 的所有可能用例,因此更明智的做法就是让开发人员们自己选择合适的网络技术和消息传递协议。

尤其是如果一个开发人员已经有了一个连接两个设备的方法,那也没有必要强迫他们就为了 WebRTC 使用另一个规范定义的方法。由于 WebRTC 没有生活在真空中,所以可能还有其他的连接,因此,如果可以使用已有的连接通道,就可以避免添加额外的连接通道。

为了交换信令信息,你可以选择通过 WebSocket 连接来回发送 JSON 对象,或者你可以在适当的通道(Channel)上使用 XMPP 或 SIP,或者你可以通过 HTTPS 使用 XMLHttpRequest 进行轮询或者其他任何你可以想出来的技术组合。你甚至可以使用电子邮件作为信号通道。

还值得注意的是,用于执行信令的信道甚至不需要通过网络。一个 Peer 可以输出一个数据对象,这个数据对象可以被打印出来,然后物理携带(步行或由信鸽)直到进入另一个设备,然后由该设备输出响应,并以同种方式返回,直到 WebRTC 对等连接打开。这将带来非常高的延迟,但也是可以做到的。

信令期间交换的信息

信令期间需要交换的信息有三种基本类型:

只有在信令成功完成之后,打开 WebRTC 对等连接的过程才真正开始。

值得注意的是,在信令期间,信令服务器实际上不需要理解两个设备之间交换的数据或者对这些数据做任何处理。信令服务器本质上就是一个中继器:两端连接的公共点,两端都知道它们的信令数据可以通过这个点来传输。服务器不需要以任何方式对此信息做出反应。

信令过程

为了开启一个 WebRTC 会话,以下事件需要依次发生:

  1. 每个 Peer 创建一个 RTCPeerConnection 对象,用来表示其 WebRTC 会话端。
  2. 每个 Peer 建立一个 icecandidate 事件的响应程序,用来在监测到该事件时将这些 candidates 通过信令通道发送给另一个 Peer。
  3. 每个 Peer 建立一个 track 事件的响应程序,这个事件会在远程 Peer 添加一个 track 到其 stream 上时被触发。这个响应程序应将 tracks 和其消受者联系起来,例如<video>元素。
  4. 呼叫者创建并与接收者共享一个唯一的标识符或某种令牌,使得它们之间的呼叫可以由信令服务器上的代码来识别。此标识符的确切内容和形式取决于你。
  5. 每个 Peer 连接到一个约定的信令服务器,如 WebSocket 服务器,他们都知道如何与之交换消息。
  6. 每个 Peer 告知信令服务器他们想加入同一 WebRTC 会话(由步骤 4 中建立的令牌标识)。
  7. 描述、候选地址等——之后会有更多

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4