WebRTC可以实现真实的时间通信。他可以直接在两个浏览器和传输媒体流量之间的点之间建立连接以及连接中实时传输中的任何数据。这非常适合屏幕共享。
WebRTC仍然非常复杂。特定的简介MDN非常详细,但是在线信号服务器,ICE,SDP,NAT简介使我头晕目眩,因此我找到了一个简单的演示,并通过此演示来理解它以了解如何使用。
首先,我们模拟了两个PC的创建。仅通过rtcpeerconnection直接创建它。
WEBRTC使用ICE的框架协议(交互式连接设施)。要在连接之前建立两个客户,两个客户需要相互交流。简而言之,是交换网络信息并互相告知两个客户。
WEBRTC使用SDP(会话描述协议)在两端交换媒体信息,例如分辨率格式信息,主要是在双方交换要约和回答。
两方在这里做的是保存他们的信息,然后发送和接收彼此的报价或答案。这些步骤如下图所示。
最后,需要处理两件简单的事情,一个是添加需要传输的媒体,并且在听媒体后有一个视频可以播放。
通过上面的这四个简单步骤,我们实现了WEBRTC的最简单示例。您是在浏览器页面下传输的。您可以在两页上创建PC1和PC2作为末端 - 到端传输吗?
理解后,WEBRTC只会负责末端 - 端连接,中间数据传输,谁控制传输到以及谁建立连接的人不一样,因此我们需要自己传输它。
通过websocket将PC1和PC2之间的信息传递。然后有以下伪-Code。在这里,仅交换ICE ICE,而SDP则被交换。
PC1代码:
PC2代码:
它看起来很简单,但是经过测试后,发现它没有连接。打印传输后的信息,并在传输后成为普通对象。
但是,在传输之前,他是rtciidandidate的对象
通过检查API,我们可以在传输后实例化此对象。
下图是我们需要的所有信息的传输步骤。
实际上,我们为Websocket所做的工作称为WEBRTC中的信号服务器。信号是双方发送的所有信息。您可以以任何形式传输此信息。信息不需要进行其他处理。唯一要做的就是将信息带到另一边。
webrtc只是一个 - 一端和两端之间的交流,但是我们有一条需求,但是这种需求很小,因此我们采用的最简单的方法是在同一客户端创建多个WebRTC。是行业中更出色的解决方案。使用SFU服务器让服务器模拟客户端以在每个客户端之间建立连接,以帮助客户端共享压力,以便在我们可控的服务器sidego上进行通信压力。恢复。
如果继续优化,则可以使用MCU服务器解决方案合并服务器上的多路连接。
对于特定内容,您可以阅读本文的说明。
最后,在该项目的宣传前夕发现了一个重大问题。以前,这两个浏览器已由两个浏览器测试,然后我在无法连接的两个设备上尝试了它。结果是结果,双方无法交流。
WEBRTC使用的冰集成了昏迷和转弯。Stun服务可以获取客户端的公共网络IP和端口。如果您仍然无法建立连接,则需要使用它。Turn Service可以绕过中继的所有数据。Google提供免费的眩晕服务器,但您也可以自己构建它。如果设置设置,则可以了解Coturn。WebRTC上的相应服务也非常简单。
原始:https://juejin.cn/post/7097142990036008968