【速成】WebRTC 交互流程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【速成】WebRTC 交互流程相关的知识,希望对你有一定的参考价值。

参考技术A (refs: https://www.w3.org/TR/webrtc/#intro )
(refs: https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Protocols#ice )

WebRTC(ICE) 的通信由两部分组成:

信令主要用来传输媒体交互需要用到的 IP,端口,媒体格式(如分辨率,编码格式等),WebRTC 协议本身只规定了信令数据的格式(SDP),并没有规定如何传输(可以用 TCP 传输,也可以微信或用 U 盘手动拷贝传输,看你喜欢)。

(refs: https://datatracker.ietf.org/doc/html/rfc4566#section-5 )

通过信令确认了数据接收的 IP 端口等信息后,就可以开始发送数据,WebRTC 使用 RTP 格式传输媒体数据,一般使用 UDP 协议传输(UDP 无法连通时,也有可能选用 TCP)

WebRTC 交互流程:

sdp 里面包含了发起方可以使用的媒体格式,sdp 里面可以包含 candidate

fingerprint: SRTP 的 DTLS 加密指纹,refs: https://datatracker.ietf.org/doc/html/rfc5763#section-1
rtcp-fb: RTP Feedback ,RTP 数据流质量控制的相关算法

(refs: https://datatracker.ietf.org/doc/html/rfc8445#section-5 - ICE Candidate Gathering and Exchange)

ICE-Controlling 一方会使用 USE-CANDIDATE 标识来提名使用某一个连通的 candidate-pair,收到对端(ICE-Controlled方)回应确认后,即确定了该 candidate-pair 作为数据收发地址。
(refs: https://datatracker.ietf.org/doc/html/rfc8445#section-6.1.1 - ICE controlling or controlled)

(refs: https://datatracker.ietf.org/doc/html/rfc8445#section-2.2 - Connectivity Checks)
(refs: https://datatracker.ietf.org/doc/html/rfc8445#section-7.2.5.3.4 - USE-CANDIDATE)

(refs: https://datatracker.ietf.org/doc/html/rfc3550#section-3 - RTP Definitions)

https://datatracker.ietf.org/doc/html/rfc4566 - SDP: Session Description Protocol
https://www.rfc-editor.org/rfc/rfc3264 - An Offer/Answer Model with the Session Description Protocol (SDP)
https://www.w3.org/TR/webrtc - WebRTC 1.0: Real-Time Communication Between Browsers
https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Protocols - MDN Introduction to WebRTC protocols
https://datatracker.ietf.org/doc/html/rfc8445 - ICE
https://datatracker.ietf.org/doc/html/rfc3550 - RTP: A Transport Protocol for Real-Time Applications

WebRTC笔记之二十:Janus信令交互流程

Janus包含三种类型的节点:
1.根节点 server root (可配置,默认是/janus),只能在该节点中创建janus会话
2.会话节点 session endpoint (例如/janus/12345678)
3.插件handle节点 plugin handle endpoint (例如/janus/12345678/98765432),插件handle节点会被添加到会话中
会话节点用来处理与会话相关的消息,插件handle节点用来处理与插件相关的消息,一个会话节点中可以管理多个插件handle节点
给上述节点发送或者从上述节点接收的消息通常至少包含两个字段janus和transaction:
janus:请求或事件,主要有如下几种类型:
create:创建一个Janus会话命令;
attach:attach一个插件到Janus会话命令;
success:一个命令的成功结果;
error:一个命令的失败结果;
ack:一个命令的ack,因为不能直接返回结果,先回ack,后续的结果通过event返回;
event:推送给客户端的异步事件,主要由插件发出,这些事件需要插件来自己定义;
message:客户端发给插件的消息,message和event就构成了应用协议;
trickle:客户端发送的candidate,会传递给ICE句柄;
keepalive:客户端发送的心跳;
webr

以上是关于【速成】WebRTC 交互流程的主要内容,如果未能解决你的问题,请参考以下文章

[webrtc] 交互式连接建立(ICE)

WebRTC笔记之二十一:基于WebSocketPP的Janus客户端

WebRTC 是不是会在没有用户交互的情况下泄露您的真实 IP?

WebRTC 速成课程

JQuery速成大法

DOM速成学习笔记