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架設不起來。

附上找到的一些架設資訊:

AppRTC也有Mobile deviceApplication的版本,在AndroidIOS上都有,官方連結 WebRTC-NativeCode可以進去看看,但是要使用Google官網把整份Source Code弄下來會非常痛苦,而且非常耗時,好在有好心的開發者把已經把相關的library compile (native code…),應該可以讓其他的開發者只要注重其他java的部分,不過當然可以動的地方就比較少,以下是連結:


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

Sep 15th, 2015

Comments