如何使用 WebRTC 构建点对点视频通话应用程序?

如何使用 WebRTC 构建点对点视频通话应用程序?

在本文中,我们将引导您完成构建实时的点对点视频通话应用程序。我们还将了解使用 WebRTC 创建应用程序所需的各种概念。下面,让我们开始吧。

什么是 WebRTC?

WebRTC代表 Web 实时通信,它可以在不使用服务器的情况下实现对等视频通话通信。它允许连接的对等方交换音频、视频和数据。

WebRTC 技术是一个免费的、跨平台的开源项目,它通过简单的 API 为浏览器和移动应用程序提供实时通信 (RTC)功能。WebRTC 的使命是通过使用两个新的 API 扩展 HTML5 来实现网络实时通信的未来:

  • RTCPeerConnection 让您可以直接与另一个点通信(WebRTC 视频通话和流媒体)。
  • RTCDataChannel 允许您向另一个对等方发送消息(WebRTC 音频/视频会议和文件共享)。

WebRTC 是一项 IETF 标准,已被多种浏览器和移动应用程序(例如 Chrome、Firefox、Opera、Android 和 iOS)采用,从而能够为现有的带有实时视频聊天 API 的 VoIP 服务创建与 WebRTC 兼容的插件。

许多通信服务基于 2000 年代初的过时架构,没有利用网络技术的进步。WebRTC 是一个更好的选择,因为它允许用户连接到他们选择的任何 Web 应用程序,而无需安装额外的插件或下载软件。

对于开发人员,WebRTC API 允许他们轻松地向他们的服务添加通信功能。这是一个新的开放标准。我们可以期待看到它被用在以前难以进入的行业,如教育、医疗、政府等。

WebRTC 是如何工作的?

WebRTC 使用 HTML、JavaScript 和 API 将通信技术集成到 Web 浏览器中,旨在简化浏览器之间的音频、视频和数据通信。WebRTC API执行许多功能,例如从设备访问视频、音频和基于文本的数据,通过浏览器启动、监视和终止小工具之间的 P2P 连接(或点对点视频聊天),以及启用双向跨多个数据通道的数据传输。

WebRTC 使用 P2P 通信将实时音频、视频和数据从一个设备传输到另一个设备以连接用户。WebRTC 可以与 STUN(NAT 会话遍历实用程序)一起使用,其中用户位于具有阻止 RTC 的 NAT 防火墙的不同 IP 网络上。

但是,有些网络非常严格,甚至不能使用 STUN 服务器来转换 IP 地址。在这些情况下,WebRTC 使用 TURN 服务器在用户之间中继流量并允许他们连接。

信令交易流程

信令服务器

要在两个设备之间建立 WebRTC 连接,信令服务器必须确定如何通过互联网连接它们。信令服务器的工作是充当两个对等点之间的中介,允许它们找到并建立连接,同时尽可能少地暴露潜在的隐私信息。

让聊天服务器准备好发送信号

我们的聊天服务器通过 WebSocket API 在客户端和服务器之间以 JSON 字符串形式发送信息。为了处理注册新用户、设置用户名和发送聊天消息(使用Javascript 视频聊天应用程序)等任务,服务器支持多种消息类型。

第 1 步:首先,您需要添加函数 sendToOneUser()。它向特定用户名发送字符串化的 JSON 消息。

function sendToOneUser(target, msgString) {
  connectionArray.find((conn) => conn.username === target).send(msgString);
}

第 2 步:接下来,您需要更新主 WebSocket 消息处理程序。它在“连接”消息处理程序的末尾进行了更改:

flycommons.aar
appbase.aar
flynetwork.aar
videocompression.aar
if (sendToClients) {
  const msgString = JSON.stringify(msg);

  if (msg.target && msg.target.length !== 0) {
    sendToOneUser(msg.target, msgString);
  } else {
    for (const connection of connectionArray) {
      connection.send(msgString);
    }
  }
}

第 3 步:创建信令协议

现在我们已经创建了一种交换消息的机制,我们需要一个协议来定义这些消息的格式。

第四步:会话描述的交换

当信令过程开始时,发起呼叫的用户会创建一个报价。它包含 SDP 格式的会话描述,必须传送给接收用户,称为被叫方。

第 5 步:信号交易流程

它需要通过中介(信令服务器)在两个对等点之间传输消息。以下是处理信令消息的一些关键点:

每个用户的客户端都在网络浏览器中运行

  • 每个用户的网络浏览器
  • 信令服务器
  • 承载聊天服务的 Web 服务器

ICE候选人交流过程

ICE 是 Interactive Connectivity Establishment 的缩写,它是网络地址转换 (NAT) 中使用的一种技术,用于为 VOIP、点对点、即时消息和其他类型的交互式媒体建立通信。通常,ICE 候选人会提供 IP 地址和端口号,从中交换数据。

STUN:它是 NAT 的会话遍历实用程序,使客户端能够发现其公共 NAT IP 地址和端口。STUN 客户端可以向 STUN 服务器发送消息以获取有关公共 IP 地址和端口的信息。

TURN:它是横向的,使用中继 NAT 使客户端能够通过中间服务器发送和接收数据。TURN 协议是 STUN 的扩展。当端点被困在不同类型的 NAT 后面或使用对称 NAT 时,通过中继服务器发送媒体可能会更容易。

它具有以下结构:

b=candidate:1 1 UDP 2130706431 192.168.1.102 1816 类型主机,

在这种情况下,UDP 指定要使用的协议,typ host 指定要使用的 ice 候选类型,host 表示候选是在防火墙内生成的。

还有一种是中继,表示这个候选可以用于防火墙外的通信。

下面列出了一些步骤:

第 1 步:分配

客户在 WebRTC 提供/回答过程中收集 ICE 的候选人。每个候选者都是一个潜在的媒体接收地址/端口。

第二步:交换

创建报价并将其交付给最终用户。客户还可以选择生成和发送他们的候选人。候选人可以包含在原始报价中,也可以在报价发送后单独发送。后者被称为涓流 ICE。

刚刚收到报价及其随附候选人的远端客户端现在将开始准备其响应。答案以与报价相同的方式生成,并创建答案 SDP。远端客户端可以将其生成的候选者打包到 SDP 中或单独发送。

第三步:验证过程

在这种情况下,每个客户端都有一个 ICE 代理处理连接管理,因为提供和回答交换发生。发送和接收所有候选人后,将开始验证过程。

第 4 步:协调

ICE 代理现在必须选择哪个候选对用于媒体流中的每个组件。第一个代理是控制代理,而第二个代理是被动代理。当 STUN 检查完成时,控制代理将在验证完成后决定使用哪个候选对。

第五步:最后一步!

一旦选择了候选对,就应该将媒体发送到客户端或从客户端发送媒体。根据连接类型,媒体可以多种方式在客户端之间传输。

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论