WebRTC
名稱源自網頁即時通信(英語:Web Real-Time Communication)的縮寫,是一個支
持網頁瀏覽器進行實時語音對話或視頻對話的API叉橱。
WebRTC是由Google主導的嗽上,由一組標準刁卜、協議和JavaScript API組成撵孤,用于實現瀏覽器之間(端到端之
間)的音頻肆氓、視頻及數據共享。
官網
RTP協議(RFC3550)
實時傳輸協議(RTP)
用于音頻數據(RTP)久免,另一個用于控制包(RTCP)
SDP(RFC4566)
Session Description Protocol
SDP協議主要包含:
SDP包括以下一些方面:
(1)會話的名稱和目的
(2)會話存活時間
(3)包含在會話中的媒體信息浅辙,包括: 媒體類型(video,audio, etc) 傳輸協議(RTP/UDP/IP,H.320, etc) 媒體格式(H.261 video, MPEG video, etc) 多播或遠端(單播)地址和端口
(4)為接收媒體而需的信息(addresses, ports, formats and so on)
(5)使用的帶寬信息
(6)可信賴的接洽信息(Contact information)
TURN(RFC5766)
ICE(RFC5245)
ICE全稱Interactive Connectivity Establishment:交互式連通建立方式。ICE參照RFC5245建議實現阎姥,
是一組基于offer/answer模式解決NAT穿越的協議集合记舆。它綜合利用現有的STUN,TURN等協議呼巴,以更
有效的方式來建立會話泽腮。客戶端側無需關心所處網絡的位置以及NAT類型伊磺,并且能夠動態(tài)的發(fā)現最優(yōu)的
傳輸路徑盛正。
Socket.IO
https://socket.io/
https://socket.io/docs/v4
應用場景
- 實時分析:將數據推送到客戶端,客戶端表現為實時計數器屑埋、圖表豪筝、日志客戶。
- 實時通訊:聊天應用
- 二進制流傳輸:socket.io支持任何形式的二進制文件傳輸摘能,例如圖片续崖、視頻、音頻等团搞。
- 文檔合并:允許多個用戶同時編輯一個文檔严望,并能夠看到每個用戶做出的修改
WebSocket 原理
WebSocket是一種雙向通信協議,它建立在TCP之上逻恐,同HTTP一樣通過TCP來傳輸數據像吻,但與HTTP最
大不同的是:
- WebSocket是一種雙向通信協議,在建立連接后复隆,WebSocket服務器和Browser/UserAgent都能
主動的向對象發(fā)送或接收數據拨匆,就像Socket一樣,不同的是WebSocket是一種建立在Web基礎上
的簡單模擬Socket的協議挽拂。 -
WebSocket需要通過握手連接惭每,類似TCP也需要客戶端和服務端進行握手連接,連接成功后才能相
互通信亏栈。
image.png