基於webrtc的apprtc服務端搭建
基於webrtc的apprtc示例發布在公網https://apprtc.webrtc.org上(需要翻牆),本文在本地ubuntu14.04 32bit搭建該系統,需要搭建房間服務器,信令服務器,TURN穿透服務器。最好使用VPN搭建環境,否則會遇到網絡引起的各種錯誤,相關資源如下:
1.房間服務器apprtc項目源碼地址: https://github.com/webrtc/apprtc
a.房間服務器搭建參考鏈接中的步驟就可以,如果網絡環境良好,搭建成功不成問題。
b.修改apprtc/out/app_engine下的constans.py,TURN_BASE_URL需要填寫本機的ip地址(注意:使用localhost會有錯誤)。
TURN_BASE_URL = 'http://192.168.1.103'
TURN_URL_TEMPLATE =
'%s/turn.php?username=%s&key=%s'
CEOD_KEY = 'helloworld'
WSS_INSTANCE_HOST_KEY = 'host_port_pair'
WSS_INSTANCE_NAME_KEY = 'vm_name'
WSS_INSTANCE_ZONE_KEY = 'zone'
WSS_INSTANCES = [{
WSS_INSTANCE_HOST_KEY: '192.168.1.103:8089',
WSS_INSTANCE_NAME_KEY: 'wsserver-std',
WSS_INSTANCE_ZONE_KEY: 'us-central1-a'
}, {
WSS_INSTANCE_HOST_KEY: '192.168.1.103:8089',
WSS_INSTANCE_NAME_KEY: 'wsserver-std-2',
WSS_INSTANCE_ZONE_KEY: 'us-central1-f'
}]
c.修改apprtc/out/app_engine下的apprtc.py
def get_wss_parameters(request):
ws_host_port_pair = request.get('wshpp')
ws_tls = request.get('wstls')
if not ws_host_port_pair:
ws_host_port_pair =
constants.WSS_HOST_PORT_PAIR
if ws_tls and ws_tls == 'false':
wss_url = 'ws://' + ws_host_port_pair +
'/ws'
wss_post_url = 'http://' + ws_host_port_pair
else:
wss_url = 'ws://' + ws_host_port_pair +
'/ws'
wss_post_url = 'http://' + ws_host_port_pair
return (wss_url, wss_post_url)
2.信令服務器collider項目源碼地址:
https://github.com/webrtc/apprtc/tree/master/src/collider
本人按照參考鏈接搭建沒有成功,主要是在go get collidermain這一步出現錯誤。經過摸索按照如下步驟搭建成功:
a.安裝Go語言運行環境 sudo apt-get install golang-go
b.在Home目錄下新建文件夾 mkdir -p ~/collider_root,並在collider_root下新建src文件夾
c.設置GOPATH環境變量 export GOPATH=~/collider_root
d.在~/collider_root/src下設置apprtc/src/collider下的三個文件夾的鏈接,或者直接將collider,collidermain,collidertest三個文件夾拷貝到~/collider_root/src下(本文apprtc在Home目錄下,具體自己修改命令中的路徑):
cp ~/apprtc/src/collider/collider ~/collider_root/src
cp ~/apprtc/src/collider/collidermain ~/collider_root/src
cp ~/apprtc/src/collider/collidertest ~/collider_root/src
e.進入collider_root下的src: cd ~/collider_root/src,編譯安裝collider:
go get collidermain
go install collidermain
成功編譯后會在collider_root目錄下生成bin和pkg文件夾,可執行程序在bin中
f.修改main.go的代碼填上自己的ip地址,var roomSrv = flag.String("room-server","http://192.168.1.103:8080/", "The origin of the room
server")
g.運行信令服務器~/collider_root/bin/collidermain -port=8089 -tls=false
3.TURN服務器:
http://io.diveinedu.com/2015/02/05/%E7%AC%AC%E5%85%AD%E7%AB%A0-WebRTC%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%90%AD%E5%BB%BA.html
參考文檔中的TURN server安裝在ubuntu 64bit機上,不實用於本文的32bit環境。32bit安裝步驟如下:
a.下載資源 wget http://rfc5766-turn-server.googlecode.com/files/turnserver-1.8.6.0-binary-linux-wheezy-ubuntu-mint-x86-32bits.tar.gz
b.解壓資源tar
-zxvf turnserver-1.8.6.0-binary-linux-wheezy-ubuntu-mint-x86-32bits.tar.gz
c.安裝服務器
sudo apt-get update
sudo apt-get install gdebi-core
sudo gdebi *.deb
d.編輯配置文件 /etc/default/rfc5766-turn-server,TURNSERVER_ENABLED=1去掉注
e.編輯配置文件 /etc/turnserver.conf
listening-device=eth0
relay-device=eth0
Verbose
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=helloword
user=helloword:0x06b2afcf07ba085b7777b481b1020391
user=helloword:helloword
stale-nonce
cert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem
no-loopback-peers
no-multicast-peers
f.生成簽名證書 sudo openssl req -x509 -newkey rsa:2048 -service coturn
start;keyout /etc/turn_server_pkey.pem -out
/etc/turn_server_cert.pem -days 99999 -nodes
g.啟動TURN服務器 service coturn start
下面是手機端和電腦端的視頻通訊效果圖:
