WebRTC | 信令服务器

这篇具有很好参考价值的文章主要介绍了WebRTC | 信令服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、相关术语

1.NAT

2.STUN服务器

3. TURN服务器

4.打洞

二、WebRTC一对一架构

三、信令

1. 信令传输协议的选择

2. 信令服务器的实现方案

3. 信令服务器的业务逻辑


        信令服务器的作用主要有两个:一是实现业务层的管理,如用户创建房间,加入房间,退出房间等;二是让通信的双方彼此交换信息,其中最常见的是交换通信双方的外网IP地址和端口。

一、相关术语

1.NAT

        Network Address Translation,网络地址转换。“NAT环境”通常指网络地址转换(Network Address Translation)环境。在计算机网络中,NAT是一种网络协议,用于将一个或多个内部网络的IP地址转换为另一个或多个外部网络的IP地址,以实现网络通信。NAT环境常用于家庭网络、企业网络和互联网服务提供商(ISP)等场景中,以提供更好的网络连接和资源共享。通过NAT,多个设备可以共享同一个公共IP地址,从而节省IP地址资源,并增强网络安全性。

2.STUN服务器

        Session Traversal Utilities for NAT,NAT会话穿越实用工具协议。STUN服务器用于帮助设备发现自己在NAT后面的公共IP地址和端口。当设备处于NAT环境中时,它的私有IP地址无法直接被其他设备访问。STUN服务器充当一个中间人,设备可以向STUN服务器发送请求,以获取自己的公共IP地址和端口。设备可以使用这些信息来建立直接的点对点连接,从而避免通过中继服务器进行通信。

3. TURN服务器

        Traversal Using Relay NAT,通过中继方式穿越NAT。TURN服务器用于在NAT环境下进行中继通信。当设备无法直接建立点对点连接时,它们可以通过TURN服务器进行通信。设备将数据发送到TURN服务器,然后由服务器转发给目标设备。TURN服务器在中继通信中起到一个中间人的作用,帮助设备进行数据的中转。TURN服务器通常会分配一个临时的公共IP地址和端口给设备,以便进行通信。中继通信会增加一些延迟和带宽消耗,因此在实时通信中,尽量避免使用中继,而是优先选择直接的点对点连接。

4.打洞

        打洞通常是指在NAT环境下,通过一些技术手段实现内网设备与外网设备之间的直接通信。
        NAT(网络地址转换)的类型中,打洞是指在内网和外网之间建立直接通信的一种技术。打洞可以是内网对外网访问时打洞,也可以是内网中的设备互相打洞。打洞通常用于解决NAT环境下的双向通信问题,而外网对内网的访问是单向的,只需要将请求转发到内网设备即可,不需要打洞操作。(即:在外网对内网进行访问时,并不涉及打洞的概念。)

二、WebRTC一对一架构

         WebRTC由四部分组成,分别为两个WebRTC终端、一个信令服务器、一台中继服务器(STUN/TURN)和两个NAT,这是最经典的一对一通信架构。其中,信令服务器与中继服务器都在NAT外,也就是属于外网。而两个WebRTC终端在NAT内,属于内网。

WebRTC | 信令服务器,# WebRtc音视频实时互动,webrtc,音视频

         两个WebRTC终端通信步骤:

  1. 首先两个终端在通信之前,都要先与信令服务器连接,即步骤1。与服务端建立好连接后,通信的双方就可以通过信令服务器彼此交换必要的信息了,比如告诉对方自己的外网IP地址和端口是多少等。
  2. 不过在交换信息之前,WebRTC终端还要与STUN/TURN服务器建立连接。这样做的目的是通过STUN/TURN服务器获得各自的外网IP地址和端口,即步骤2。
  3. WebRTC终端拿到自己的外网IP地址和端口后,再通过信令服务器交换给对方。当彼此获得对方地址后,它们就可以尝试NAT穿越,进行P2P连接了,即步骤3。

三、信令

        要实现一对一通信,驱动系统运转的核心就是信令,如创建房间、退出房间等都会用到信令。信令控制着系统各模块之间的前后调用关系。比如当收到用户成功加入房间的信令后,系统需要立即将RTCPeerConnection对象创建好,以便向STUN/TURN服务器请求其外网的IP地址和端口;而当收到另一个用户加入房间的消息时,系统需要将自己的外网IP地址和端口交换给对方,从而建立起socket连接,等等。

1. 信令传输协议的选择

        我们一般选择TCP或基于TCP的HTTP/HTTPS、WS/WSS等协议作为信令服务器的传输协议。这样做有两点好处:一是不用担心信令丢失,因为TCP是可靠的传输协议,能保证传输的数据可靠、有序到达;二是在TCP上传输的数据是流式的,因此不必担心传输的数据过大导致拆包传输的问题。

        注意:WebRTC在信令控制方面采用了可靠的TCP,但是音视频数据传输上,使用了UDP作为传输层协议(传输快、低延时)。

2. 信令服务器的实现方案

        方案一:使用C/C++、Java等语言从零开始开发一个信令服务器。这种方案的实现成本非常高,要写很多代码,还要对编写的代码进行大量的测试。使用这种方案,即使开发一个最简单的HTTPS服务器,至少也要花两周以上的时间。

        方案二:利用现成的Web服务器做应用开发,如以Apache、Nginx、NodeJS为服务,在其上做应用开发是非常不错的选择。

        建议采用第二种方案,它有以下几方面优势:

  • 一般信令系统都需要使用HTTP/HTTPS、WS/WSS等传输协议,而Apache、Ng inx、NodeJS等服务器显然在这方面有天然的优势。
  • 实时通信的信令服务器一般负载都不是特别高。举个例子,假设有10000个房间同时在线,我们可以评估出大部分房间只需要处理几个信令,那么总的消息量也不过是几万个,这个量级对于Nginx和NodeJS来说,单台服务器就可以应付了。
  • 通过Nginx或NodeJS实现信令服务器特别简单,只要几行代码就可以实现。
  • 稳定性高。像Apache、Nginx、NodeJS这类服务器都经过了长时间的验证,所以它们的稳定性是可以得到保障的。

        在第二种方案中,尤其推荐使用Node.js来实现信令服务器。虽然NodeJS在性能上不如Nginx,但对于我们这种学习项目来说使用它已经足够了,而且它使用起来也特别简单,还有非常好的生态链,很多逻辑关系不需要我们自己写,大大减少了开发信令服务器的工作量。

3. 信令服务器的业务逻辑

        当两个用户要进行通信时,他们首先要创建一个房间,成功加入房间之后,双方才能交换必要的信息,如Ofer/Answer、Candidate等。当通信的双方结束通话后,用户需要发送离开房间的消息给信令服务器,此时信令服务器需要将房间内的所有人清除;如果房间里已经没有人了,还需要将空房间销毁掉。文章来源地址https://www.toymoban.com/news/detail-637540.html

到了这里,关于WebRTC | 信令服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WebRTC实战-第二章-使用WebRTC实现音视频通话

    、 什么是WebRTC|WebRTC入门到精通必看|快速学会音视频通话原理|WebRTC超全资料分享FFmpeg/rtmp/hls/rtsp/SRS WebRTC **WebRTC详细指南** http://www.vue5.com/webrtc/webrtc.html WEBRTC三种类型(Mesh、MCU 和 SFU)的多方通信架构 WebRTC API包括媒体捕获,音频和视频编码和解码,传输层和会话管理 。 假设

    2023年04月12日
    浏览(33)
  • 【WebRTC】音视频通信

    WebRTC对等体还需要查找并交换本地和远程音频和视频媒体信息,例如分辨率和编解码器功能。 交换媒体配置信息的信令通过使用被称为SDP的会话描述协议格式来交换,被称为提议和应答的元数据块 一方发起调用 getUserMedia 打开本地摄像头 媒体协商(信令交换,媒体协商主要

    2024年02月07日
    浏览(40)
  • WebRTC音视频原理

    WebRTC,网页即时通讯(Web Real-Time Communication),是直接在 Web 浏览器内驱动实时通信(语音、视频和任意数据)方法的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准,并于 2011 年标准化,是谷歌开源的一款产品。 WebRTC 实现了浏览器快速

    2023年04月08日
    浏览(56)
  • WebRTC音视频通话-WebRTC推拉流过程中日志log输出

    WebRTC音视频通话-WebRTC推拉流过程中日志log输出 之前实现iOS端调用ossrs服务实现推拉流流程。 推流:https://blog.csdn.net/gloryFlow/article/details/132262724 拉流:https://blog.csdn.net/gloryFlow/article/details/132417602 在推拉流过程中的WebRTC的相关日志log输出可以看到一些相关描述信息。在WebRTC日志

    2024年02月10日
    浏览(38)
  • WebRTC音视频通话(二)简单音视频通话

    本篇不详细介绍websocket,只针对websocket整合rtc。 webrtc是P2P通信,也就是实际交流的 只有两个人 ,而要建立通信,这两个人需要 交换一些信息来保证通信安全 。而且, webrtc必须通过ssh加密 ,也就是使用https协议、wss协议。 借用一幅图 1.1 创建端点的解析 以下解析不包括we

    2023年04月09日
    浏览(47)
  • WebRTC音视频会议底层支撑技术

    WebRTC允许应用使用P2P通信。WebRTC是一个广泛的话题,在本文中,我们将重点讨以下问题。 为什么Web RTC 如此受欢迎? 在P2P连接过程中会发生什么 信号传递 NATs和ICE STUN TURN服务器 VP9视频编解码器 WebRTC APIs 安全 1.为什么Web RTC 如此受欢迎? 开放源代码 它为浏览器提供了端到端

    2024年02月11日
    浏览(43)
  • mediasoup webrtc音视频会议搭建

    拉下源码: https://github.com/versatica/mediasoup-demo 源码里有以下目录其中,app网页的界面终端,broadcasters是广播,也就是他支持我们用ffmpeg推流上去给所有的成员广播,server是流媒体服务器。 源码包含了,https服务器用于浏览器获取界面,信令服务器用于房间管理,和流媒体服务

    2024年02月05日
    浏览(32)
  • webRTC一对一音视频对话

    环境 阿里云操作系统: ubuntu 18.4 amd         注意:安全组一定添加对应的入口端口 nodejs -v 18.19.0 npm -v 10.2.3 需要安装的库 package.json 服务器端         webRTC一定要使用https服务器,如果没有ssl证书,可以使用自制证书         1.创建HTTPS服务器                 使用soc

    2024年01月19日
    浏览(39)
  • WebRTC | 音视频直播客户端框架

            端到端通信互动技术可分解为以下几个技术难点:客户端技术、服务器技术、全球设备网络适配技术和通信互动质量监控与展示技术。         音视频直播可分成两条技术路线:一条是以音视频会议为代表的实时互动直播;另一条是以娱乐直播为代表的流媒体

    2024年02月14日
    浏览(31)
  • gstreamer中使用webrtc实现音视频对讲

    gstreamer官方源代码中有一个基于webrtc插件实现音视频通话的开源项目,下面介绍在Ubuntu系统中如何搭建环境并使用。 这里省略gstreamer安装,直接安装使用webrtcbin插件使用的相关库,参考官网。系统版本建议高于ubuntu18.04。 首先安装如下相关依赖库。 gstreamer项目编译官方建议

    2024年04月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包