Web 实时通信技术WebRTC(web通讯)
ccwgpt 2024-10-30 01:35 57 浏览 0 评论
Web 实时通信 (WebRTC) 是目前正在开发的开源项目,主要目的是提供 Web 应用程序之间的实时、对等通信。
WebRTC 是一个开源项目,允许向应用程序添加点对点实时通信功能。
WebRTC 首次发布时,针对的是在 Chrome 上运行的 Web 应用程序。但是现在在几乎所有流行的浏览器、Android、iOS 和桌面平台上都可以运行 WebRTC 应用程序。
WebRTC 提供简单的 JavaScript API,开发人员轻松构建具有实时音频、视频和数据传输功能的 Web 应用程序。WebRTC 的最新发展也使其能够整合到本机应用程序中。由于 API 背后发生了很多事情,因此了解 WebRTC 的概念和工作原理以充分利用该技术非常重要。
WebRTC有什么优势?
如果需要创建实时通信的应用程序或平台,则需要考虑很多因素,例如:
- 通信质量(延迟、媒体质量、稳定性等)
- 访问设备硬件(相机、麦克风等)
- 网络使用情况(带宽使用情况、网络限制等)
- 视频和音频编码/解码
- 安全
- UX 改进功能(降噪、回声消除等)
- 支持多种平台(Windows、Mac、Linux、Android、iOS等)
如果使用 WebRTC 则就不需要考虑上面这些因素。
WebRTC 使应用程序开发人员能够使用简单的 API 启动实时通信能力。
如何建立连接
为了建立 WebRTC 连接,需要执行以下两个步骤:
- 查找对等点的位置。
- 通知对等方设置 WebRTC 连接。
第 1 步:找到对等点
把这想象成打电话,当需要通过电话与某人交谈时,拨打对方的电话号码并与该人建立联系。当有人想给你打电话时,也会发生同样的事情。在移动通信的情况下,使用手机/电话号码作为用户的标识。电信系统进一步使用该标识来定位用户。
但是,Web 应用程序不能相互“拨号和呼叫”。世界上数以百万计的浏览器中的每一个都没有分配唯一 ID(如电话号码)。但是,这些应用程序所在的系统一般都分配了一个唯一的 IP 地址,这个IP地址可用于“定位”对等点。
然而,这个过程并不像听起来那么容易。因为,这些系统中的大多数都位于网络地址转换 (NAT)设备后面。需要 NAT 设备来实现对可用公共 IP 地址的安全性和 IPv4 限制。NAT 设备将专用 IP 地址分配给本地网络中的系统。此私有 IP 地址仅在本地网络内有效和可见,并且不能用于接受来自外部世界的通信,因为网络外的系统不知道网络内设备的公共 IP。
由于 NAT 设备的参与,对等方不知道自己的公共 IP 地址,因为它被 NAT 分配的私有 IP 地址屏蔽。因此,它不能与另一个对等方共享其公共 IP 地址以接受连接。用更通俗易懂的话来说,如果想让别人给你打电话,需要把你的电话号码给对方。但是,在存在 NAT 的情况下,就像住在酒店里一样,房间的电话号码对外界隐藏,打到酒店的电话在接待处处理,并根据要求进一步重定向到房间。这种间接形式的连接并不打算用于对等连接技术。
相关学习资料推荐,点击下方链接免费报名,先码住不迷路~】
音视频免费学习地址:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
【免费分享】音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击788280672加群免费领取~
为了克服这个问题,使用了一种称为交互式连接建立 (ICE)的协议。ICE 的工作是找到连接两个对等点的最佳路径。ICE 可以执行直接连接,即在没有 NAT 的情况下,也可以执行间接连接,即在存在 NAT 的情况下。ICE 框架为提供了“ICE 候选人”。'ICE 候选人'只不过是包含自己的公共 IP 地址、端口号和其他连接相关信息的对象。
在没有 NAT 的情况下,ICE 非常简单,因为对等方的公共 IP 地址很容易获得。但是,在存在 NAT 的情况下,ICE 依赖于称为NAT 会话遍历实用程序 (STUN)和/或使用 NAT 周围中继的遍历 (TURN)的实体。
STUN 服务器基本上允许对等方找出它自己的公共 IP 地址。需要知道自己的公共 IP 地址的对等方向 STUN 服务器发送请求。STUN 服务器回复该对等体的公共 IP 地址。这个公共地址现在可以与其他同行共享,以便他们可以找到您。但是,如果对等点位于复杂的 NAT 和/或防火墙之后,即使 STUN 也无法找到并向请求对等点提供其 IP 地址。在这种情况下,ICE 依靠 TURN 来建立连接。TURN 是一个中继服务器,当两个对等点之间无法直接连接时,充当传输数据、音频、视频的中介。
STUN 服务器只在寻找公网 IP 的过程中参与。一旦建立了 WebRTC 连接,所有进一步的通信都通过 WebRTC 进行。但是,在 TURN 的情况下,即使在设置了 WebRTC 连接之后,也始终需要 TURN 服务器。
TURN 服务器不是有意的,但由于 STUN 的限制,必须依赖它。STUN 服务器只有大约 86% 的成功率。
第 2 步:通知对等方设置 WebRTC 连接
现在已经获得了 ICE 候选者,下一步是将这些候选者发送到希望连接的对等点。与候选人一起发送会话信息、时间描述、媒体描述等会话描述。ICE 候选者和会话描述被捆绑在一个对象内,并使用会话描述协议 (SDP)进行传送。在某些情况下,候选 ICE 不会与 Session Description 捆绑在同一个对象中,而是单独发送,这称为 Trickle ICE(这是一个全新的概念)。
需要将信息“发送”给其他对等方。但是,当只知道发送方的 IP 地址而不知道接收方的 IP 地址时,候选和会话描述是如何传输的?而且由于WebRTC连接还没有建立,这些信息是通过什么媒介传输的?
所有这些问题的答案都在一个称为信号机制的概念中。在建立 WebRTC 连接之前,需要一些媒介在对等点之间传递上述信息,并让它们知道如何定位和相互连接以进行 WebRTC 连接。这就是信号机制发挥作用的地方。信令机制在打算连接的两个对等方之间交换连接信号(ICE 候选、会话描述等)。
WebRTC 没有为实现这种信号机制定义任何标准,而是让开发人员创建选择的机制。交换信息的信令机制可以通过简单地将信息复制粘贴到各个对等方或使用 WebSockets、Socket.io、服务器端事件等通信通道来实现。简而言之,信令机制 只是一种模式在对等点之间交换连接相关信息,以便对等点可以相互识别并开始使用 WebRTC 进一步通信。
假设对等点A想与对等点B建立 WebRTC 连接,需要执行以下操作:
对等点A使用交互式连接建立 (ICE)生成它的 ICE 候选者。在大多数情况下,它需要 NAT 会话遍历实用程序 (STUN)或使用 NAT 周围中继的遍历 (TURN)服务器。
对等点A将 ICE 候选和会话描述捆绑到一个对象中。该对象在对等点A中存储为本地描述(对等点自己的连接信息),并通过信令机制传输到对等点B。这部分称为要约。
Peer B 收到 offer 并将其存储为Remote Description(另一端 peer 的连接信息)以供进一步使用。对等体B生成它自己的 ICE 候选和会话描述,将它们存储为本地描述,并通过信令机制将其发送给对等体A。这部分称为答案。(注:如前所述,第2步和第3步的ICE候选也可以分开发送)
对等点A从对等点B接收答案并将其存储为远程描述。
这样,双方就可以知道对方的连接信息,可以通过WebRTC成功开始通信了!
作者:天行无忌
原文 Web 实时通信技术WebRTC
相关推荐
- 谷歌正在为Play商店进行Material Design改造
-
谷歌最近一直忙于在其应用程序中完成MaterialDesign风格的改造,而Play商店似乎是接下来的一个。9to5Google网站报道,有用户在Play商店的最新版本中发现了新界面,暗示该应用和网...
- 企业网站免费搭建,定制化建站CMS系统
-
科腾软件企业网站CMS管理系统已完成开发工作,首次开源(全部源码)发布。开发工具:VisualStudioEnterprise2022数据库:SQLite(零配置,跨平台,嵌入式)开发...
- 您需要的 11 个免费 Chrome 扩展程序
-
来源:SEO_SEM营销顾问大师Chrome扩展程序是SEO的无名英雄,他们在幕后默默工作,使您的策略脱颖而出并提高您的努力效率。从竞争对手研究到审核您的网站,速度比您说“元描述”还快,这些小工具发...
- 户外便携设备抗干扰困境如何破局?CMS-160925-078S-67给出答案
-
在户外复杂的电磁环境中,便携式设备中的扬声器需具备出色抗干扰能力,CUID的CMS-160925-078S-67在这方面表现突出。 从其结构设计来看,矩形框架虽主要为适配紧凑空...
- 一个基于NetCore开发的前后端分离CMS系统
-
今天给大家推荐一个开源的前后端分离架构的CMS建站系统。项目简介这是一个基于.Net3构建的简单、跨平台、模块化建站系统。系统业务简单、代码清晰、层级分明、全新架构便于二次扩展开发。支持多种数据库,...
- 本地Docker部署ZFile网盘打造个人云存储
-
前言本文主要介绍如何在LinuxUbuntu系统使用Docker本地部署ZFile文件管理系统,并结合cpolar内网穿透工具实现远程访问本地服务器上的ZFile传输与备份文件,轻松搭建个人网盘,无...
- pcfcms企业建站系统 免费+开源的企业内容管理系统
-
项目介绍pcfcms是基于TP6.0框架为核心开发的免费+开源的企业内容管理系统,专注企业建站用户需求提供海量各行业模板,降低中小企业网站建设、网络营销成本,致力于打造用户舒适的建站体验。演示站...
- 【推荐】一个高颜值且功能强大的 Vue3 后台管理系统框架
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍SnowAdmin是一款基于Vue3、TypeScript、Vite5、Pinia、Arco-Desi...
- java开源cms管理系统框架PublicCMS后台管理系统
-
一款使用Java语言开发的CMS,提供文章发布,图片展示,文件下载,用户权限、站点模块,内容管理、分类等功能。可免费用于商业用途maven工程数据库脚本在工程中database文件夹下代码结构:效果...
- 一定要大量读书:当我问Deepseek,它给出的高效阅读方法厉害了!
-
一年一度的世界读书日,总该写点什么。于是,我去问Deepseek给我推荐人生破局必读的10本书,结果它给了我回复,竟然10本推荐的书籍里,我都曾经浏览过,同时还给出破局关键。而说浏览过,不是读过,是因...
- 《搜神札记》:不应磨灭的惊奇(小说《搜神记》)
-
□黄勃志怪传说的书写一直是文人墨客的后花园,晚近尤盛,从张岱到袁枚到纪昀,收集那些或阴森或吊诡的行状故事,遂成一类,到民国年间,周作人挟此遗传,捋袖子拿希腊神话动刀,乃兄鲁迅不甘其后,《故事新编》虎...
- 《如何构建金字塔》之第三章总结(构建金字塔结构的方法有)
-
“没有什么比一套好理论更有用了。”——库尔特.勒温这篇读后感依然引用了这句库尔特.勒温名言,这句话也是我读芭芭拉.明托这本书的初衷。今天就“如何构建金字塔”,我来谈谈我的读后心得。我热爱写作,但是写...
- 《助人技术》第一章助人引论内容框架
-
第一章内容基本呈现如何成为助人者(心理咨询师)以及一些相关基础知识,对于进入这个行业有兴趣以及希望通过心理咨询寻求帮助但存有疑虑的当事人,都值得一读。心理咨询的三个阶段(不是说严格的三个阶段,而是广义...
- AI助手重构读后感写作流程:从提纲到完整性思考的转换
-
大家好!你有没有遇到过读完一本书,想要写读后感,却不知道从何下手的情况呢?今天我们要来探讨一下如何利用稿见AI助手来重构读后感写作流程,从提纲到完整性思考的转换。让我们一起来看看这个全新而又实用的方法...
- 图解用思维导图做读书笔记技巧(图解用思维导图做读书笔记技巧视频)
-
做阅读笔记非常有利于读后进行有效的深入思考,而思维导图这一强大的工具其最大的特点就是架构清晰,在阅读过程中对文章的分析、总结、分类起着很大的辅助作用。思维导图读书笔记步骤:1、阅读大纲。首先要快速浏览...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)