CentOS下配置webrtc伺服器
————————————————————————————————————————————————
原理介紹:<以下文字copy自上文>
房間伺服器
房間伺服器是用來建立和管理通話會話的狀態維護,是雙方通話還是多方通話,加入與離開房間等等,我們暫時沿用Google部署在GAE平臺上的AppRTC這個房間伺服器實現,該GAE App的原始碼可以在github.com上獲取.該實現是一個基於Python的GAE應用,我們需要下載Google GAE的離線開發包到我們自己的Linux伺服器上來執行該專案,搭建大陸網際網路環境下的房間伺服器。
信令伺服器
信令伺服器是用來管理和協助通話終端建立去中心的點對點通話的一個角色.這個角色要負責一下任務:
- 用來控制通訊發起或者結束的連線控制訊息
- 發生錯誤時用來相互通告的訊息
- 各自一方媒體流元資料,比如像解碼器、解碼器的配置、頻寬、媒體型別等等
- 兩兩之間用來建立安全連線的關鍵資料
- 外界所能看到的網路上的資料,比如廣域網IP地址、埠等
信令伺服器的具體協議實現沒有嚴格規定,只要實現功能就OK.
我們這裡依然沿用Google提供的基於GO語言和WebSocket的信令伺服器Collider.和上面的房間伺服器一併在Github上可以獲取.獲取到我們自己的Linux伺服器上用GO語言的執行環境來執行該信令伺服器.
coturn打洞伺服器
我們目前大部分人連線網際網路時都處於防火牆後面或者配置私有子網的家庭(NAT)路由器後面,這就導致我們的計算機的IP地址不是廣域網IP地址,故而不能相互之間直接通訊. 正因為這樣的一個場景,我們得想辦法去穿越這些防火牆或者家庭(NAT)路由器,讓兩個同處於私有網路裡的計算機能夠通訊起來.
TURN(Traversal Using Relay NAT,允許在TCP或UDP的連線上跨越 NAT 或防火牆. TURN是一個Client-Server協議。TURN的NAT穿透方法與STUN類似,都是通過取得應用層中的公有地址達到NAT穿透,但實現TURN client的終端必須在通訊開始前與TURN server進行互動,並要求TURN server產生"relay port", 也就是relayed-transport-address.這時 TURN server會建立peer,即遠端端點(remote endpoints), 開始進行中繼(relay)的動作,TURN client利用relay port將資料傳送至peer,再由peer轉傳到另一方的TURN client.通過伺服器新產生的peer來進行資料的中轉.
ICE協議就是綜合前面2種協議的綜合性NAT穿越解決方案.
通過offer/answer模型建立基於UDP的通訊。ICE是offer/answer模型的擴充套件,通過在offer和answer的SDP(Session Description Protocol)裡面包含多種IP地址和埠,然後對本地SDP和遠端SDP裡面的IP地址進行配對,然後通過P2P連通性檢查進行連通性測試工作,如果測試通過即表明該傳輸地址對可以建立連線。其中IP地址和埠(也就是地址)有以下幾種:本機地址、通過STUN伺服器反射後獲取的server-reflexive地址(內網地址被NAT對映後的地址)、relayed地址(和TURN轉發伺服器相對應的地址)及Peer reflexive地址等。
搭建伺服器:
github上的appRTC原始碼工程:appRTC
- 配置環境
驗證java環境並安裝
配置java環境變數java -version wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-i586.rpm" rpm -ivh jdk-8u102-linux-i586.rpm
安裝python-webtest
sudo yum install python-webtest
安裝npm【會附帶將依賴的nodejs一起安裝】官方安裝文件 setup_9.x裡面的9代表版本號第一位,可以根據所需替換。如果要解除安裝npm,可以使用yum remove nodejs
yum install -y gcc-c++ make curl -sL https://rpm.nodesource.com/setup_9.x | sudo -E bash - yum install nodejsnpm --version #檢視npm版本
安裝grunt-cli【因為我也不是很懂grunt和grunt-cli的關係,所以分別執行了一次安裝命令】
npm install -g grunt
npm install -g grunt-cli
- 下載原始碼
s