Learn AppRTC/WebRTC
最近在使用WebRTC做些Android上的應用,一開始被Google的這些東西快要搞死,為了方便還是把資料整理一下,丟個教學出來,以便複習跟學習,如果寫的有誤請不吝告知。
都不知道是甚麼的可以先去玩一下 AppRTC Demo
WebRTC是Web Real-Time Communication的縮寫,其本意就是可以在Web上實行即時溝通的一個免費且開放的project,其project提供了簡易的api讓開發者便於開發應用.
WebRTC的目標為在browser/mobile device/IoT device上開創一個豐富且高品質且統一的溝通協定架構。
一個私有的WebRTC基本上要有
Room Server : 主要用來創建跟管理通訊狀況。 (Google原生是使用Nodejs實現,用python驅動)
Signaling Server : 主要是管理以及協助終端做點對點的一個角色,負責了控制通訊發起/結束/錯誤的連線消息控制,建立安全連接的關鍵數據,管理雙方在外界所能看到的網路上數據(public ip, port,…) (Google原生使用go language寫的collider)
Turn Server : 主要用來協助防火牆穿透的部分,給予Ice candidate等…資訊。 (Google推薦使用coTurn/rfc5766-turn-server)
基本上的架設方法在AppRTC Demo Code可以找到如何架設,如果架設起來應該會長得像他們做出來的AppRTC Demo,不過我在實作的過程中遇到了一些問題就是我的Turn Server架設不起來。
附上找到的一些架設資訊:
- 第六章 WebRTC服務器搭建 by Diveinedu
- 基於webrtc的apprtc服務器的搭建 by 小曉陳
- 自建AppRTC by ETiv ,比較推薦看這個,寫得挺詳細的。
AppRTC也有Mobile device的Application的版本,在Android跟IOS上都有,官方連結 WebRTC-NativeCode可以進去看看,但是要使用Google官網把整份Source Code弄下來會非常痛苦,而且非常耗時,好在有好心的開發者把已經把相關的library compile (native code…),應該可以讓其他的開發者只要注重其他java的部分,不過當然可以動的地方就比較少,以下是連結:
IOS版的AppRTC by ISBX
Android版的AppRTC by njovy,好心的njovy還一直有在更新,此專案是在Android Studio上開發,下載下來之後直接run就行了
NOTE:
由於我參考了Etiv的文章後還是有些不懂,所以目前我所有Server都是使用Google的,然後去實現我的Android Application(讓兩隻android device透過WebRTC中的Data Channel來傳輸資料,點對點前的溝通都是透過google架設的Server,目前使用Google的Server都堪用),如果有人整個架設成功還請教一下小弟,至於這個Data Channel怎麼使用因為原生的Source Code中都沒用到,所以沒東西可以參考,在網路上有看到有用的資訊連結在此 Working with data channel in android webrtc application,很多問題通常在Stackflow總是可以找到解答:D