搭建webrtc服务器
基于webrtc
的apprtc
示例发布在公网https://apprtc.webrtc.org
上,搭建该系统需要房间服务器、信令服务器、TURN
穿透服务器。最好使用VPN
搭建环境,否则会遇到网络引起的各种错误。
房间服务器apprtc
项目源码地址: https://github.com/webrtc/apprtc
房间服务器搭建参考github
中的步骤即可。
修改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' }]
修改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)
信令服务器collider
项目源码地址:https://github.com/webrtc/apprtc/tree/master/src/collider
安装Go
语言运行环境
$ sudo apt-get install golang-go
在Home
目录下新建文件夹,设置GOPATH
环境变量
$ mkdir -p ~/collider/src $ export GOPATH=~/collider
在~/collider/src
下设置apprtc/src/collider
下的三个文件夹的链接,或者直接将collider
,collidermain
,collidertest
三个文件夹拷贝到~/collider/src
目录下。
$ cd ~/collider/src $ cp -rf ~/apprtc/src/collider/collider ./ $ cp -rf ~/apprtc/src/collider/collidermain ./ $ cp -rf ~/apprtc/src/collider/collidertest ./ $ go get collidermain $ go install collidermain
成功编译后会在collider目录下生成bin和pkg文件夹,可执行程序在bin中
修改main.go
的代码填上自己的ip
地址
var roomSrv = flag.String("room-server","http://192.168.1.103:8080/", "The origin of the room server")
运行信令服务器
$ ~/collider/bin/collidermain -port=8089 -tls=false
TURN
服务器
下载解压资源
$ wget http://rfc5766-turn-server.googlecode.com/files/turnserver-1.8.6.0-binary-linux-wheezy-ubuntu-mint-x86-32bits.tar.gz $ tar -zxvf turnserver-1.8.6.0-binary-linux-wheezy-ubuntu-mint-x86-32bits.tar.gz
安装服务器
$ sudo apt-get update $ sudo apt-get install gdebi-core $ sudo gdebi *.deb
编辑配置文件/etc/default/rfc5766-turn-server
,TURNSERVER_ENABLED=1
去掉注。
编辑配置文件/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
生成签名证书
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
启动TURN
服务器
service coturn start