【多人在线会议】6、什么是webrtc

1、webrtc官网介绍

https://webrtc.org/?hl=zh-cn

借助 WebRTC,您可以为应用添加基于开放标准运行的实时通信功能。它支持在对等设备之间发送视频、语音和通用数据,使开发者能够构建强大的语音和视频通信解决方案。这项技术适用于所有现代浏览器以及所有主要平台的原生客户端。WebRTC 采用的技术是开放网络标准,以常规 JavaScript API 的形式在所有主流浏览器中提供。对于原生客户端(例如 Android 和 iOS 应用),可以使用具备相同功能的库。WebRTC 项目属于开源项目,受 Apple、Google、Microsoft 和 Mozilla 等公司支持。本页面由 Google WebRTC 团队维护。

从中我们可以提取以下几点重要信息:

  • 支持的数据类型:
    • 视频数据
    • 音频数据
    • 通用数据:一般包括文本、文件、数据流、元数据、任意二进制数据
  • 支持几乎所有现代的浏览器:在Windows、macOS和Linux系统上的主流浏览器,如Chrome、Firefox、Safari和Edge,都支持WebRTC
  • 支持主流的移动操作系统:Android和ios
  • 支持的公司来自于几个国际巨头:Apple、Google、Microsoft、Mozila
  • 项目的维护者是google

2、webrtc使用场景

  • 共享视频
  • 共享音频
  • 所有多人同步数据的场景:在线编辑器、在线游戏
  • 点对点通讯:
    • WebRTC技术的核心优势之一就是它的点对点(Peer-to-Peer,P2P)通信能力,这使得浏览器之间可以直接交换数据,而无需通过中心服务器进行数据传输,从而能够提高通信效率、减少延迟,同时降低服务器带宽成本。以下是WebRTC点对点技术的几个关键组成部分:
      • 1. 媒体捕获和流
      • WebRTC使得网页应用可以直接访问设备的摄像头和麦克风,通过navigator.mediaDevices.getUserMediaAPI,可以捕获音频和视频流。
      • 2. RTCPeerConnection
      • 这是实现P2P通信的核心对象,负责处理音视频的捕获、编解码,以及传输。建立连接时,每个参与者创建一个RTCPeerConnection对象,通过交换信息(如SDP信息,描述媒体的元数据)来协商P2P连接的参数。
      • 3. ICE(Interactive Connectivity Establishment)
      • 为了能在复杂的网络环境下建立连接,WebRTC使用ICE框架来克服NAT(网络地址转换)和防火墙带来的通信障碍。客户端会收集可能的网络连接候选(Candidates),这些候选描述了不同的方式来连接另一个客户端,包括直接连接和通过TURN/STUN服务器的连接。
      • 4. STUN/TURN 服务器
      • **STUN(Session Traversal Utilities for NAT)**服务器帮助客户端发现自己的公开地址和端口,以及NAT是否会阻断传入的连接。
      • 如果直接P2P连接无法建立,可以使用**TURN(Traversal Using Relays around NAT)**服务器作为中继,来转发两个端点之间的数据。
      • 5. 数据通道(Data Channels)
      • 除了音视频通信外,WebRTC还提供了数据通道(通过RTCDataChannel),使得P2P网络中的浏览器可以直接交换任意数据。这对于建立高效的实时通信应用非常有用,比如文件分享、在线游戏等。
      • WebRTC的P2P技术极大地推动了实时通信领域的发展,为开发者提供了一种建立高效、稳定和安全通信通道的方式。然而,要充分利用WebRTC的潜力,并确保良好的用户体验,开发者需要深入理解P2P网络的构建和维护,以及相关的网络问题处理机制。

3、我感兴趣的点:

ICE(Interactive Connectivity Establishment)是一个协议框架,用于在WebRTC等实时通信技术中解决NAT(Network Address Translation)穿透和防火墙绕过的问题,确保两个希望进行直接通信的终端(即点对点连接)能够找到彼此并成功建立连接。其主要作用和流程可以概括如下:

解决NAT和防火墙限制

在实际网络环境中,大多数终端设备(如个人计算机和手机)位于NAT或防火墙之后,这些技术通常会限制入站连接,导致直接的点对点通信变得困难。ICE通过在通信的初始阶段收集所有可能的网络路径(称为“候选”)并测试它们,来尝试建立终端之间的连接。

候选收集

ICE首先收集每个终端的所有可能的网络连接方式。这些“候选”包括:

  • 主机候选:终端直接的IP地址,适用于同一局域网内的通信。
  • 反射候选(通过STUN服务器获取):如果终端位于NAT之后,STUN服务器可以帮助终端了解其在公网上的地址(NAT外部的IP地址和端口)。
  • 中继候选(通过TURN服务器获取):当直接连接或通过NAT的连接均不可行时,数据可以通过一个TURN服务器中转,该服务器扮演的是“中继”角色,转发两个终端之间的数据。

连接检查

一旦所有候选都被收集和交换(通过信令服务器交换),两个终端将通过发送连接检查请求来测试这些候选路径,以找到一条有效的通信路径。

选择最佳路径

ICE会尝试所有可能的候选组合,并根据连接速度和稳定性选择最佳的连接路径。一旦找到可行的路径,该路径就被用来建立和维持终端之间的通信。

通过以上过程,ICE能有效地协助WebRTC的P2P连接建立,即使在复杂的网络环境中也能保证较好的通信质量和连接成功率,从而使实时通信变得更加顺畅和可靠。

思考:是否可以将这个功能剥离出来?

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部