作者:花果山の香蕉
主要参考安装指导:
官方指导:https://github.com/webrtc/apprtc/blob/master/README.md
主要步骤:
*注意观察过程中的提示,缺什么有什么错误不要放过,一步一步慢慢来是最快的。尽可能先参考官方指导、INSTALL、README文件再看博客。整个跑通用了快3天,还是走了不少弯路。
获取项目原代码:
$ git clone https://github.com/webrtc/apprtc.git
得到apprtc文件夹,在文件夹下安装依赖
npm install
pip install -r requirements.txt
# 进一步安装配置
$ sudo apt install nodejs npm`
$ npm install -g grunt`
-g 安装到全局目录,这样只设置全局目录的path就可以,否则node
modules会分布在不同位置
$ sudo apt install openjdk-8-jdk
$ sudo apt install golang-1.10-go
安装go:需要sodo,需要添加安装目录的bin到PATH。
$ sudo find / -name go
…
/usr/lib/go-1.10/bin/go
在自己使用的bashrc文件中添加到PATH, /.bashrc或者/.zshrc,添加内容:export PATH="$PATH:/usr/lib/go-1.10/bin"
$ source ~/.zshrc
下载安装google cloud sdk: https://cloud.google.com/sdk/docs/#linux
$ tar -xf google-cloud-sdk-245.0.0-linux-x86_64.tar.gz
得到google-cloud-sdk 文件夹
$ sudo ./google-cloud-sdk/install.sh
和之前相同方式添加nodejs目录和google cloud sdk目录到PTAH,本文使用如下,目录根据自己的修改:
export PATH="/home/ts/env/google-cloud-sdk/bin:/home/ts/prepare/node-v10.16.0-linux-x64/bin:$PATH"
$ source ~/.zshrc
用到的库或者工具:
Colider为信令服务器,使用使用webSocket交互信息。
主要参考官方指导文档:https://github.com/webrtc/apprtc/blob/master/src/collider/README.md
2.1. go环境
Collider使用go编写,需要用go build。之前SETP1中已经安装。
建立文件夹作为go工作目录,以编译collider,如mkdir
文件夹名为goWorkspace(本文将goWorkspace与官方apprtc目录放在同级),将绝对路径添加到bashrc文件中,添加内容:
export GOPATH=绝对路径/goWorkspace
source
命令更新配置。
2.2 建立src文件夹并链接源码
$ mkdir $GOPATH/src
当前在执行git clone apprtc的文件夹
$ ln -s `pwd`/apprtc/src/collider/collider $GOPATH/src
$ ln -s `pwd`/apprtc/src/collider/collidermain $GOPATH/src
$ ln -s `pwd`/apprtc/src/collider/collidertest $GOPATH/src
2.3 安装需要的依赖
$ go get collidermain
可能出现的问题:
package golang.org/x/net/websocket: unrecognized import path "golang.org/x/net/websocket" (https fetch: Get https://golang.org/x/net/websocket?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
解决方法:
参考:https://my.oschina.net/u/2306127/blog/1599929
$ mkdir -p $GOPATH/src/golang.org/x
$ cd $GOPATH/src/golang.org/x
$ git clone https://github.com/golang/net.git
2.4 安装collidermain主程序
$ go install collidermain
2.5 配置证书文件
建立根目录下文件夹,并将申请得到的证书拷贝到下边
$ sudo /cert
将证书分别命名为:
$ cp xxx.cert cert.pem
$ cp xxx.key key.pem
运行collidermain的格式:
$ GOPATH/bin/collidermain -port=8089 -tls=true -room-server="https://
-room-server配置与之后apprtc有关,之后可以再修改此命令
注:看collidermain源码似乎只能设置port、tls、room-server三个属性,启用tls=true时,使用绝对路径,会默认在/cert/下面找证书文件;证书文件有误会在浏览器看到websocket时有ERR_CERT_AUTHORITY_INVALID类似的错误。
注:collider端口需要在服务器配置上放通
见 https://blog.csdn.net/ts_dchs/article/details/97279097
使用端口:8101
官方指导:https://github.com/webrtc/apprtc/blob/master/README.md
4.1 部分配置
安装 grunt
$ sudo npm -g install grunt-cli
4.2 修改配置文件
src/app_engine/constants.py
[a]注释掉 ICE_SERVER_OVERRIDE = None
配置TURNserver,旧版该字段为TURN_SERVER_OVERRIDE
[b]开放ICE_SERVER_OVERRIDE = [ … ]
代码块,编辑为:
ICE_SERVER_OVERRIDE = [
{
"urls": [
"turn:62.234.71.93:8101?transport=udp",
"turn:62.234.71.93:8101?transport=tcp",
],
"username": "ts",
"credential": "12345678"
},
{
"urls": [
"stun:62.234.71.93:8101"
]
}
]
注意:去掉有没有必要的缩进、空格,否则会出错。
[c] 修改ICE_SERVER_BASE_URL = ‘https://networktraversal.googleapis.com’ ,没有找到字段含义,如果文档还请告知【TODO】。
ICE_SERVER_BASE_URL = ‘https://networktraversal.googleapis.com’
[d]修改WSS_INSTANCE_HOST_KEY = 'host_port_pair’为自己的https域名和
WSS_INSTANCE_HOST_KEY = ‘
[e]WSS_INSTANCES字段与WSS_HOST_PORT_PAIRS在测试中似乎不能省略。可以将WSS_INSTANCES中多余的元组去掉,只留一个元祖,将WSS_INSTANCE_HOST_KEY字段做相同修改。
其他用模型,各个字段含义还没找到文档研究,如有请告知【TODO】。
4.3 编译
在apptrc目录下执行grunt build
,注意每次完成配置文件修改需要再次build,得到结果在apptrc/out下。
4.4 运行
运行apptrc nodejs应用服务器(在apprtc文件夹下)
$ dev_appserver.py --host 0.0.0.0 --enable_host_checking=no --ssl_certificate_path=/cert/cert.pem --ssl_certificate_key_path=/cert/key.pem out/app_engine
不添加host会默认只在localhost进行部署,外部无法根据域名访问;
结果如图:
发现default模块默认使用的http与https端口分别为8080与8081,主要要进行放通,或者自定义在程序中修改。
信令服务器Collider
$ $GOPATH/bin/collidermain -port=8089 -tls=true -room-server="https://
该服务器打印结果中可以看到对进入与退出房间的管理。
应用服务器APPRTC
本文在SDK目录下/apprtc,由于out文件夹
$ dev_appserver.py --host 0.0.0.0 --enable_host_checking=no --ssl_certificate_path=/cert/cert.pem --ssl_certificate_key_path=/cert/key.pem out/app_engine
打印可以可以看到应用服务器的请求-应答或者错误提示
ICE TURN服务器
$ sudo turnserver -r testrealm
最终通过https://:
webrtc:https://github.com/webrtc/apprtc/blob/master/README.md
collider:https://github.com/webrtc/apprtc/blob/master/src/collider/README.md
coturn:https://github.com/coturn/coturn/wiki/CoturnConfig
官方wiki关于coturn turnserver和turnadmin:https://github.com/coturn/coturn/wiki
https://www.jianshu.com/p/a19441034f17