Webrtc服務(wù)器搭建

Webrtc服務(wù)器包括:房間服務(wù)器(Room Server)、信令服務(wù)器(Signaling Server)、防火墻打洞服務(wù)器(STUN/TURN/ICE Server)

一、房間服務(wù)器搭建

1、代碼下載
服務(wù)器項目地址https://github.com/webrtc/apprtc

git clone https://github.com/webrtc/apprtc

2、配置依賴環(huán)境

sudo apt-get install npm
npm -g install grunt-cli

Google App Engine SDK for Python:
可選擇使用sudo apt-get install python-webtest直接安裝python,然后下載Google App Engine SDK for Python并解壓,編輯/etc/profile

export PATH=$PATH:$HOME/google_appengine/

保存退出并執(zhí)行source /etc/profile。

node直接使用sudo apt-get install nodejs-legacy安裝版本過低,使用下面方法安裝:

wget https://nodejs.org/dist/v7.7.0/node-v7.7.0-linux-x64.tar.gz
tar xvf node-v7.7.0-linux-x64.tar.gz

配置環(huán)境,編輯/etc/profile

export PATH=$PATH:$HOME/node-v5.9.0-sunos-x64/bin

保存退出執(zhí)行source /etc/profile

3、安裝apprtc代碼中的grunt依賴

cd apprtc
npm install
grunt build //編譯

4、修改配置文件
主要是src/app_engine目錄下的apprtc.pyconstants.py文件。對于src/app_engine目錄下的文件每次修改后需執(zhí)行命令grunt build重新編譯,也可以直接編輯out/app_engine目錄下的apprtc.pyconstants.py避免重新編譯。
constants.py

#TURN_BASE_URL = 'https://computeengineondemand.appspot.com'
TURN_BASE_URL = 'http://192.168.2.128:3487'
#TURN_URL_TEMPLATE = '%s/turn?username=%s&key=%s'
TURN_URL_TEMPLATE = '%s/turn.php?username=%s&key=%s'
#CEOD_KEY = '4080218913'
CEOD_KEY = '1234' 

WSS_INSTANCES = [{
    #WSS_INSTANCE_HOST_KEY: 'apprtc-ws.webrtc.org:443',
    WSS_INSTANCE_HOST_KEY: '192.168.2.128:443',
    WSS_INSTANCE_NAME_KEY: 'wsserver-std',
    WSS_INSTANCE_ZONE_KEY: 'us-central1-a'
}, {
    #WSS_INSTANCE_HOST_KEY: 'apprtc-ws-2.webrtc.org:443',
    WSS_INSTANCE_HOST_KEY: '192.168.2.128:443',
    WSS_INSTANCE_NAME_KEY: 'wsserver-std-2',
    WSS_INSTANCE_ZONE_KEY: 'us-central1-f'
}]

apprtc.py

 if wss_tls and wss_tls == 'false':
    wss_url = 'ws://' + wss_host_port_pair + '/ws'
    wss_post_url = 'http://' + wss_host_port_pair
  else:
    #wss_url = 'wss://' + wss_host_port_pair + '/ws'
    wss_url = 'ws://' + wss_host_port_pair + '/ws'
    #wss_post_url = 'https://' + wss_host_port_pair
    wss_post_url = 'http://' + wss_host_port_pair

def make_pc_config(ice_transports):
  config = {
  #'iceServers': [],
  'iceServers': [{"urls":"stun:192.168.2.128"},{"urls":"turn:lin@192.168.2.128","credential":"1234"}],
  'bundlePolicy': 'max-bundle',
  'rtcpMuxPolicy': 'require'
  };

  if ice_transports:
    config['iceTransports'] = ice_transports
  return config

把原來的wss和https的scheme都改為ws和http,不要讓客戶端或者瀏覽器去使用SSL鏈接。若有第三方根證書的簽名機構(gòu)頒發(fā)的證書可忽略。

修改完后重新執(zhí)行grunt build。

5、啟動房間服務(wù)器

dev_appserver.py --host=0.0.0.0 ./apprtc/out/app_engine

二、信令服務(wù)器搭建

1、安裝GO環(huán)境
直接使用命令sudo apt-get install golang-go安裝的版本太低,后面執(zhí)行go get collidermain會報錯,所以采用下面一種方法:
下載GO安裝包并解壓

wget https://storage.googleapis.com/golang/go1.6.3.linux-amd64.tar.gz
tar xvf go1.6.3.linux-amd64.tar.gz

編輯打開文件/etc/profile(也可根據(jù)自己需求選擇其他環(huán)境配置文件編輯),在文件末尾添加兩行

export GOROOT=$HOME/go 
export PATH=$PATH:$GOROOT/bin

保存退出執(zhí)行source /etc/profile。

2、配置信令服務(wù)器
新建目錄(collider_root)用于存放Collider的go代碼程序。

mkdir -p ~/collider_root
mkdir ~/collider_root/src

同設(shè)置GOROOT設(shè)置,在/etc/profile中添加

export GOPATH=$HOME/collider_root
export PATH=$PATH:$GOPATH/bin

建立鏈接(也可以直接將~/apprtc/src/collider/目錄中的collider、collidermain、collidertest直接拷貝到~/collider_root/src目錄下)

ln -sf ~/apprtc/src/collider/collider $GOPATH/src/
ln -sf ~/apprtc/src/collider/collidermain $GOPATH/src/
ln -sf ~/apprtc/src/collider/collidertest $GOPATH/src/

編輯$GOPATH/collidermain/main.go,修改房間服務(wù)器為我們前面的房間服務(wù)器:

//var roomSrv = flag.String("room-server", "https://appr.tc", "The origin of the room server")
var roomSrv = flag.String("room-server", "http://192.168.2.128:8080", "The origin of the room server")

3、安裝信令服務(wù)器依賴和collidermain

go get collidermain
go install collidermain

go get collidermain命令運行失敗,那么則用下面這個麻煩的方法:

cd $GOPATH/src
wget http://www.golangtc.com/static/download/packages/golang.org.x.net.tar.gz
tar xvf golang.org.x.net.tar.gz
go install golang.org/x/net/websocket/

4、運行

 $GOPATH/bin/collidermain -port=8089 -tls=false 

5、測試

go test collider

三、STUN/TURN/ICE服務(wù)器的搭建

1、下載并安裝(詳細閱讀安裝手冊 INSTALL)

wget http://turnserver.open-sys.org/downloads/v4.4.1.2/turnserver-4.4.1.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz
tar xvfz turnserver-4.4.1.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz

sudo apt-get update
sudo apt-get install gdebi-core
sudo gdebi coturn*.deb

2、編輯配置文件
編輯配置文件,打開系統(tǒng)默認啟動配置:
$ vim /etc/default/coturn
把上面打開編輯的文件中的這一行TURNSERVER_ENABLED=1去掉注釋,保存退出。然后編輯/etc/turnserver.conf

listening-device=eth0
relay-device=eth1
Verbose
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=1234
user=lin:1234
user=xml:1234
stale-nonce
cert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem
no-loopback-peers
no-multicast-peers

上面cert和pkey配置的自簽名證書用Openssl命令生成:

sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes

3、啟動
service coturn start

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 此教程于2016年3月18日更新版本更多原理介紹請參考戴維營教育2015年2月的舊教程:http://io.div...
    戴維營教育閱讀 8,601評論 10 8
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • 屋漏偏逢連夜雨 , 船遲又遇打頭風(fēng)。
    哲愉閱讀 299評論 0 0
  • 原本以為有很多話想說,有很多感嘆要唏噓,以為要或大或小弄個儀式來Mark一下這個decade。 可寫寫刪刪,留下的...
    沫moi閱讀 190評論 0 0
  • 常熟的面,大抵是和別的地方不一樣的。他不似蘭州拉面那般連綿不絕,亦不似陜西臊子面那般筋韌爽口,更不似山西刀削面那般...
    大風(fēng)哥在寫文章閱讀 3,971評論 0 1

友情鏈接更多精彩內(nèi)容