WebRTC 教程一:WebRTC信令、架构和 API 入门

WebRTC 教程二:WebRTC API 和 Leak

本文是 WebRTC 的第三篇教程,主要介绍了 WebRTC 的一些特性,调试方法以及相关服务器搭建方法。

目录

  • WebRTC: 如何在浏览器中启用/禁用

    • Chrome

    • Firefox

    • Safari

    • Microsoft Edge

    • Opera

  • WebRTC 中的 WebSocket

    • WebRTC 能否代替 WebSocket

  • 如何调试 Chrome 中的 WebRTC

  • 如何调试 Firefox 中的 WebRTC

  • DataChannel API 介绍及使用

    • WebRTC DataChannel

    • 如何设置 WebRTC DataChannel

  • 通过 WebSocket 搭建一个信令服务器

WebRTC: 如何在浏览器中启用/禁用

以下这些浏览器是支持WebRTC的浏览器:

  • Google Chrome(28+)

  • Mozilla Firefox(22+)

  • Safari(11+)

  • Microsoft Edge(12+)

  • Opera(18+)

Chrome

Chrome 浏览器中,WebRTC 是默认开启的,如果没有开启,就需要检查是否有其他扩展在阻拦 WebRTC 服务,如 WebRTC Leak Prevent 和 WebRTC Control 和 Easy WebRTC Block 和 WebRTC Network Limiter 等。

Firefox

Firefox 浏览器中,WebRTC 也是默认开启的,如果想要关闭 WebRTC,可以直接在浏览器权限中设置:在地址栏中填入"about:config"并进入,在搜索栏中搜索 media.peerconnection,就可以在列表中看到 media.peerconnection.enabled,可以在此直接设置开启与否。

Safari

Safari 浏览器中同样也可以在浏览器权限中设置开启与关闭 WebRTC。方法:Preference -> Advanced 中开启开发模式的菜单,并在开发模式中选择 Experimental Features 并开启 WebRTC DTMF。关闭 WebRTC 也是相同的方法

Microsoft Edge

Edge 浏览器中,WebRTC 是默认开启的,如果没有,就需要在已安装的扩展中搜索有没有 WebRTC 控制相关的设置。

Opera

Opera 浏览器中,可以通过其他扩展或者浏览器两种方式来开启或关闭 WebRTC 服务。Opera 中可以用于关闭 WebRTC 的扩展有:WebRTC Leak Prevent, WebRTC Control, Easy WebRTC Block, WebRTCNetwork Limiter 等。或是用设置的话:Settings->Preference 中输入 WebRTC 就能看到 WebRTC 的开启或关闭选项。

WebRTC 中的 WebSocket

WebSocket 是一个基于 HTTP 的协议,并且需要一个服务器。用户可以通过 WebSocket 接收或发送任何类型的数据。

WebRTC 能否代替 WebSocket

首先,WebSocket 只是一个基于 HTTP 的传输协议,不是一个采集音视频流的工具,而 WebRTC 是一个专门为媒体流而不是数据流分享而设计的,且其基于 DTLS,也就带来了更高的安全性,且也可以使用 WebRTC DataChannel 来发送或接收任何数据。

其次,WebSocket 需要一个服务器,可以支持一个浏览器和一个网页服务器之间的全双工通信,并可以使用 wss 来让其更安全。WebRTC 需要一个信令服务器来交换 SDP,它会直接与某人的浏览器进行连接并交换数据,它也可以在两个浏览器之间完成全双工通信。

总而言之,WebSocket 是为可靠通信设计的,其更注重于网页应用,如果想要的是服务器-客户端模式的通信,WebSocket 是更好的选择。而在 WebRTC 中传输的是非可靠流,意味着可以在网络中出现丢包,WebRTC 主要面向的是安全的浏览器间之间通信。

在 WebRTC 中,也可以使用 WebSocket 来搭建信令服务器。讲者展示了一个两个浏览器通过一个 WebSocket 信令服务器建立连接的示意图:

其中,信令服务器是使用 nodeJS 应用写的,nodeJS 是一个异步的服务端 javascript 服务器。WebSocket 服务器可以直接不借助其他协议的情况下完成信令过程。

如何调试 Chrome 中的 WebRTC

假设现在有一个应用正在 Web 浏览器上运行,WebRTC 通信中的进程都是异步的,那么问题来了:如何找到一次通话中哪个 WebRTC 进程停止了?这时候就需要用到 WebRTC Logs 了。

Chome 浏览器提供了一个 WebRTC 内部页面用于跟踪 WebRTC 连接,如下图右侧所示。

在一个 WebRTC 会话的过程中,可以打开 chrome://webrtc-internals 页面,来看到这些 log 信息。可以点击这些 api 的任意一项来看到其参数。讲者进一步列举了常用的连接方法和事件的内容及其参数:

这些方法都可以点进去,查看当前的参数或返回的成功与否,比如AddStream方法中的流id,CreateOffer方法是否调用成功等。

本文福利, 免费领取C++音视频学习资料包、技术视频/代码,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,编解码,推拉流,srs)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

如何调试 Firefox 中的 WebRTC

要在 Firefox 浏览器中调试 WebRTC,首先需要安装 DevTools Media Panel,然后在加载了插件后,运行 WebRTC 应用,并点击 Tools->Browser Tools->Web Developer Tools 并点击 Media-WebRTC。之后就可以看到 WebRTC 进程和连接状态,此外也可以点击任意的 API 来查看其参数。随后讲者通过视频具体展示了 Debug WebRTC 流程。

DataChannel API 介绍及使用

WebRTC DataChannel

在只希望使用 WebRTC 传输文件或文本时,WebRTC 标准也支持一个 API 来通过 RTCPeerConnection 发送任意的数据,即 RTCDataChannel。RTCDataChannel 负责所有的实时数据的交换,并把这些数据直接从一端传输到另一端。RTCDataChannel 相对于其他通信信道最大的优势在于,它是不借助第三个服务器,直接在端到端之间传输的,使用 Stream Control Transmission Protocal(SCTP) 就导致其有很低的延迟。

WebRTC DataChannel 支持 Blob,ArrayBuffer 以及 ArrayBufferView,这些在文件传输以及多人游戏服务中都十分关键。SCTP 协议可以允许设置可靠性,基于信息的传输,流控以及拥塞控制,它还会使用 DTLS 来完成加密保护隐私。总而言之,DataChannel 可以提供一个飞快的安全的浏览器间传输方案。

如何设置 WebRTC DataChannel

DtaChannel 是从一个已经连接的 PeerConnection 中建立的,可以设置其中一些可选项,如 ordered, maxPcketLifeTime, maxRetransmits 等。DataChannel 还提供了一些事件,连接建立了,断开了或是遇到错误,以及从对端接收到信息时。

通过 WebSocket 搭建一个信令服务器

信令服务器负责帮助 WebRTC 搭建其中的端到端连接。WebSocket 在服务端和客户端之间提供一个持续的低延迟连接。

WS library 可以基于 Node.js 帮助搭建 WebSocket,而 NPM 则是 NodeJS 的包管理平台。接着讲者展示了一个搭建 WebSocket 连接的 demo。

首先可以看到通过 require 方法引入了 WebSocket 包,在第二行就生成了一个监听 8895 端口的服务器,并在连接建立成功情况下,通过 connection.send 发送信息,connection.on 接收信息以及关闭连接。

本文福利, 免费领取C++音视频学习资料包、技术视频/代码,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,编解码,推拉流,srs)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

WebRTC 教程三:WebRTC特性,调试方法以及相关服务器搭建方法相关推荐

  1. 流放者柯南自建服务器 linux,《流放者柯南》自建服务器教程一览 服务器搭建方法介绍...

    流放者柯南怎么开服 个人服务器搭建方法图文教学 <流放者柯南>私人服务器建立和设置时间:2017-02-07编辑:***来源:网络 流放者柯南游戏允许玩家建立私人服务器,并且可以修改服务器 ...

  2. 英灵神殿服务器linux,英灵神殿服务器搭建方法 简单三步轻松搭建英灵神殿服务器...

    英灵神殿服务器搭建方法是很多玩家都会问的一个问题,毕竟搭建了服务器可以和好友一起玩游戏,那么今天小编就来和大家讲讲英灵神殿服务器搭建方法,感兴趣的小伙伴一起来看看吧! 第一步:SteamCMD和安装内 ...

  3. 英灵神殿服务器本地文件夹,英灵神殿服务器搭建 英灵神殿服务器搭建方法

    英灵神殿服务器搭建方法是很多玩家都想知道的,毕竟知道了怎么搭建服务器才能和好友一起玩,那么今天小编就来告诉大家英灵神殿服务器搭建方法,感兴趣的小伙伴一起来看看吧! 英灵神殿服务器搭建方法: 下载Ste ...

  4. .NET Core(C#) 反射类的属性(PropertyInfo)、字段(FieldInfo)和方法(MethodInfo)相关操作扩展方法工具类

    本文主要介绍.NET Core(C#)中,使用反射进行类(class)的属性(PropertyInfo).字段(FieldInfo)和方法(MethodInfo)相关操作,通过扩展方法编写的工具类,以 ...

  5. webrtc笔记(1): 基于coturn项目的stun/turn服务器搭建

    webrtc是google推出的基于浏览器的实时语音-视频通讯架构.其典型的应用场景为:浏览器之间端到端(p2p)实时视频对话,但由于网络环境的复杂性(比如:路由器/交换机/防火墙等),浏览器与浏览器 ...

  6. 自建服务器调试,Mac简单实现服务器搭建(本地)与iOS调试

    本人也是小菜鸟一枚,有时候服务器比较忙,有的数据没办法测试,程序有时候无法联调,于是乎找到了相关的一些文章进行了本机服务器搭建,容易上手,话不多说,开始吧. 一.下载一个jar包 点击链接下载服务器端 ...

  7. T级图片数据Cache思路以及图片服务器搭建方法

    通过 pp.sohu.com,淘宝,拍拍网的域名分析: 1871.img.pp.sohu.com.cn ,1872.img.pp.sohu.com.cn,1873.img.pp.sohu.com.cn ...

  8. 流放者柯南自建服务器 linux,流放者柯南自建服务器教程一览服务器搭建方法介绍...

    <流放者柯南>怎么自己搭建服务器?不少玩家都对于自建服务器很感兴趣.下面就为大家带来自建服务器教程,以供大家参考. 教程: 服务器建设流程:点击查看 英文版的 ,基本和方舟一样..(以下是 ...

  9. 饥荒联机版服务器搭建_饥荒:联机版服务器搭建方法 搭建TGP专属服务器教程_3DM单机...

    1.服务器下载 点开TGP-饥荒-联机大厅,找到上图的"搭建服务器",点击,会出现下载. 评价里有说卡的,自建服可以有效的防止游戏内卡卡的情况发生,而且可以解放主机,不至于我们房主 ...

最新文章

  1. 机器也学会如何做「阅读理解」了? 云从科技上交大提出的DCMN+ 模型为你解答!!!...
  2. 用ssh建立机器之间的信任机制
  3. 【看这里】网易云信 IM 红包上线啦!最快3小时集成红包功能
  4. JQuery动态创建Form
  5. [MapReduce_add_4] MapReduce 的 join 操作
  6. java代码编写的文本特征提取_Test1 java语言写的特征提取源代码,有搞文字识别的可以下载一看,简单易学 Develop 274万源代码下载- www.pudn.com...
  7. Java I/O 扩展
  8. 【经典回顾】静态结构不能满足模型部署性能需求?微软提出动态卷积结构,Top-1准确率提高2.9%!(附复现代码)...
  9. 三次元的世界里,机械臂的手活儿也无敌了
  10. linux js脚本无法响应,执行Linux shell脚本时出错
  11. java中的轻重量级组件_java Swing AWT 轻量级组建 和 重量级组件
  12. [人工智能]动物专家系统work
  13. Excel 转 PDF 并添加水印
  14. Inverting Visual Representations with Convolutional Networks
  15. usaco Raucous Rockers
  16. maven打包报错failed: Unable to find a single main class from the following candidates []
  17. 每日一练 — 2021.12.30
  18. EasyExcel 实现批量合并单元格(支持自定义)
  19. 小黑小波比.极客学院.HTML5学习笔记
  20. iOS开发者遇到审核失败的原因及解决办法

热门文章

  1. 浮动广告(页面中一张广告图片不断的变化位置)
  2. Mathtp**下载
  3. HTTP请求数据格式与响应数据格式知识讲解
  4. dell 笔记本 n卡 deepin驱动
  5. #力扣 LeetCode LCP 02. 分式化简 @FDDLC
  6. Robotstudio软件:机床上下料工作站机器人示教编程
  7. [源码和文档分享]基于Java Swing JFream 组件的趣味推箱子小游戏
  8. 计算机中显卡在什么地方 看,电脑显卡在哪看?
  9. 【下载查询资料】资料链接
  10. 牛客多校-Z-Game on grid-(博弈论+必胜态必败态转移)