热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

本文主要介绍了WebRTC的一些特性,调试方法以及

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方法是否调用成功等。

CSDN站内私信我(关注旁边,就是私信),领取最新最全C++音视频学习提升资料,内容包括(C/C++Linux 服务器开发,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 接收信息以及关闭连接。


推荐阅读
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 场景1.IE,Firefox浏览器访问不了网站,谷歌浏览器可以,返回错误码DNS_PROBE_POSSIBLE.2.pingwww.qq.com可以ping通,ping局域 ... [详细]
  • CentOS7系统目录LINUX有四种基本文件系统类型普通文件:如文本文件、C语言元代码、SHELL脚本、二进制的可执行文件等,可用cat、less、 ... [详细]
  • 校内无法访问IEEE等部分数据库的解决方案
    解决了校内无法访问IE ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • centos php部署到nginx 404_NodeJS项目部署到阿里云ECS服务器全程详解
    本文转载自:http:www.kovli.com20170919ecs-deploy作者:Kovli本文详细介绍如何部署NodeJS项目到阿里云ECS上, ... [详细]
  • 我只是互联网中的菜鸟一个,由于心血来潮也整了一个个人站,但在网络中游荡了大半个世纪,才发现给网站定位是多么的重要,只有好的运营模式及盈利模式,网站才能发展的更好,否则累死也赚不服务 ... [详细]
  • JavaWeb介绍概念JavaWeb,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有javaapplet,不过使 ... [详细]
author-avatar
等了哭了累了55
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有