Day06 WebRTC 中的 Signaling Server

Signaling server 在 WebRTC 中扮演什麽角色

前面说到 WebRTC 使用 Signaling server 来交换媒体资讯与网路候选者的讯息,所以 Signaling server 承担着通话是否能接通的重责大任。但 WebRTC 1.0 规范文档中却没有对 Signaling server 做任何定义,原因是 Signaling server 与应用的商业逻辑密切相关,有些应用不需要多人通话,有些需要多人互动,如果去规范就会失去很大的弹性,不如就不去约束了,而 WebRTC 就只需要专注在影音处理、网路处理,任何能够进行网路资料交换的技术都可以用来实现 Signaling server,如HTTP、XMPP及WebSocket等。

通常我们使用 WebSocket 与 Signaling server 之间进行连接。由於 WebSocket 是双向通信协议,服务器可以很容易的发送资料给使用者。听起来感觉很感觉很复杂,但其实就是一系列 WebSocket 请求,开发者可以自定义 RequestBody 的内容。

如何运作

https://ithelp.ithome.com.tw/upload/images/20210920/20130062I9h2DQlmQy.png

Signaling Server 有点像是交友软件,下载 APP 注册帐号时我们就要填写我们的个人讯息,当有人想认识你时,对方可以看到我们的个人资讯,我们也可以看到对方的资讯,觉得个性兴趣相辅後我们可以进行联系,熟识後可以约出来吃饭聊天。

是不是很像上一篇提到的流程:

https://ithelp.ithome.com.tw/upload/images/20210920/20130062ozKrRtC9PX.png

  1. Bob 呼叫 RTCPeerConnection.createOffer 建立一个 offer ,并呼叫 setLocalDescription 设定本地的 SDP。
  2. 通过 Signaling server 将包含 Bob SDP 的offer 发送给 Alice。
  3. Alice 收到 offer 後呼叫 setRemoteDescription 设定 Bob 的 SDP。
  4. Alice 呼叫 RTCPeerConnection.createAnswer 建立一个 answer ,并呼叫 setLocalDescription 设定本地的 SDP。
  5. 通过 Signaling server 将包含 Alice SDP 的 answer 发送给 Bob 。
  6. Bob 收到 answer 後呼叫 setRemoteDescription 设定 Alice 的SDP

总结

  • 了解运作流程
  • 我们需要自己根据应用的情境自己设计 Signaling server
  • 能够进行网路资料交换的技术都可以用来实现 Signaling server

<<:  Day5 - 2D渲染环境基础篇 II - 成为Canvas Ninja ~ 理解2D渲染的精髓

>>:  【Day20】比较Nodelist与HTML collection的差异

从零开始用github架设静态网站入门(2) - HTML & Bootstrap

讲完一开始的设置,紧接着就要到关键的程序部份了,而所谓的HTML是属於一种标签语言,本身并没有一般程...

小物件实作

闹钟 # cogs/......略 @commands.command() async def cl...

【没钱买ps,PyQt自己写】Day 13 - 使用 QVBoxLayout, QscrollArea 制作出卷轴,以高解析度检视图片 (基於 QImage 使用 OpenCV)

看完这篇文章你会得到的成果图 前言 我们接下来的讨论,会基於读者已经先读过我 day5 文章 的架构...

《从前一天整理行李,进行三重观点叠加》

一天始於前一天的30分钟。 回应生活来说, 就像我们会在重要日子的前一晚 确认充足,好好准备。 隔天...

更新网格机器人和策略回测

Strategies: 交易成本的正负号写反了,最近用一小时线测试才发现这件事 把交易成本设定移到前...