WebRTC服务器的配置

来源:互联网 发布:淘宝微淘抢红包 编辑:程序博客网 时间:2024/06/06 01:48

WebRTC服务器由三部分组成:
1. 房间服务器:对客户端提供信令服务器的配置信息,通过http协议实现
2. 信令服务器:将本地端的condidate经过SDP协议封装,通过websocket发送给远程端,实现本地和远程端的condidates的交换,从而实现”穿墙”
3. coturn服务器:客户端condidates发现服务器

房间服务器和信令服务器google的demo下载地址:https://github.com/webrtc/apprtc 。apprtc包含有房间服务器和信令服务器的实现。
coturn服务器下载地址:https://github.com/coturn/coturn

房间与信令服务器的配置

环境配置

  • 系统版本:Ubuntu 5.4.0-6ubuntu1~16.04.4
  • 安装如下依赖工具:
sudo apt-get install openjdk-7-jdk sudo apt-get install nodejssudo apt-get install -y npmsudo npm install -g npmsudo apt-get install nodejs-legacysudo npm -g install grunt-clisudo apt-get install python-webtestsudo apt-get install -y python-requestssudo apt-get install golang-gosudo apt-get install -y mercurial

apprtc房间服务器运行时需依赖Google App Engine SDK for Python点击下载(需要翻墙)。下载完成后解压并设置环境变量

sudo vi /etc/profileexport PATH=$PATH:/home/google_appenginesource /etc/profile

配置房间服务器

  • 修改文件src/app_engine/apprtc.py
//在get_wss_parameters方法中,需要把 wss: 替换成 ws:、把 https: 替换成 http:def get_wss_parameters(request):......  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 = 'ws://' + wss_host_port_pair + '/ws'    wss_post_url = 'http://' + wss_host_port_pair  return (wss_url, wss_post_url)

不要使用ssl链接,因为没有有效证书,ssl链接会失败!

//在make_pc_config方法中,在config里面加turnserver和stunserver地址和用户密码,jalon是用户名,密码也是jalon.如下: config = {  'iceServers': [{"urls":"stun:192.168.1.183"},{"urls":"turn:jalon@192.168.1.183","credential": "jalon"}],  }
  • 修改文件src/app_engine/constants.py,修改TURN_BASE_URL,WSS_INSTANCES,CEOD_KEY,如下所示
# TODO: Remove once clients support ICE_SERVER.#TURN_BASE_URL = 'https://computeengineondemand.appspot.com'TURN_BASE_URL = 'http://192.168.1.183:3478'#TURN_BASE_URL = 'http://107.160.87.231:3478'TURN_URL_TEMPLATE = '%s/turn?username=%s&key=%s'#CEOD_KEY = '4080218913'CEOD_KEY = 'jalon'#必须和cotrun服务器配置一致#107.160.87.231#ICE_SERVER_BASE_URL = 'https://networktraversal.googleapis.com'ICE_SERVER_BASE_URL = 'http://192.168.1.183:3478'#ICE_SERVER_BASE_URL = 'http://107.160.87.231:3478'ICE_SERVER_URL_TEMPLATE = '%s/v1alpha/iceconfig?key=%s'ICE_SERVER_API_KEY = os.environ.get('ICE_SERVER_API_KEY')WSS_INSTANCES = [{    #WSS_INSTANCE_HOST_KEY: 'apprtc-ws.webrtc.org:443',    #WSS_INSTANCE_HOST_KEY: '107.160.87.231:8089',    WSS_INSTANCE_HOST_KEY: '192.168.1.183:8089',    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: '107.160.87.231:8089',    WSS_INSTANCE_HOST_KEY: '192.168.1.183:8089',    WSS_INSTANCE_NAME_KEY: 'wsserver-std-2',    WSS_INSTANCE_ZONE_KEY: 'us-central1-f'}]

修改完成后执行grunt build,编译完成后会生成out目录,可以直接执行

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

打印log如下:

jalon@sub-server:~/apprtc$ dev_appserver.py --host=0.0.0.0 ./out/app_engineINFO     2017-01-17 08:34:47,013 sdk_update_checker.py:229] Checking for updates to the SDK.INFO     2017-01-17 08:35:05,035 sdk_update_checker.py:245] Update check failed: <urlopen error [Errno 101] Network is unreachable>INFO     2017-01-17 08:35:05,116 api_server.py:205] Starting API server at: http://localhost:41124INFO     2017-01-17 08:35:05,121 dispatcher.py:197] Starting module "default" running at: http://0.0.0.0:8080INFO     2017-01-17 08:35:05,128 admin_server.py:116] Starting admin server at: http://localhost:8000

配置信令服务器

  1. 创建服务器目录:
sudo mkdir -p /collider_root/srcsudo chmod 777 /collider_root/src
  1. 修改环境变量
sudo vi /etc/profileexport GOPATH=/collider_rootsource /etc/profile
  1. 拷贝服务器源码文件
将apprtc\src\collider 目录文件拷贝至/collider_root/src目录下
  1. 开始编译
进入/collider_root/src目录下,执行:go get collidermaingo install collidermain
  1. 运行服务器
修改collider_root/src/collidermain/main.go填上信令服务器的ip地址,如下:var roomSrv = flag.String("room-server", "http://192.168.1.183:8080/", "The origin of the room server")修改后保存。

执行/collider_root/bin/collidermain -port=8089 -tls=false启动信令服务器.

coTurn服务器配置

coTurn服务器目前是google维护的开源服务器,源码托管在github上https://github.com/coturn/coturn。为了节省配置的时间,也可以直接下载已经编译好的软件包,在下面站点可以下载我们对应平台的软件包:http://turnserver.open-sys.org/downloads/v4.4.1.2/ 打开这个网址,根据我们的服务器类型选择下载,我现在选择Debian和Ubuntu系统的包:

命令行下载: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参考安装手册 INSTALL 文件进行安装:sudo apt-get updatesudo apt-get install gdebi-coresudo gdebi coturn*.deb然后编辑配置文件,打开系统默认启动配置:vim /etc/default/coturn将TURNSERVER_ENABLED=1去掉注释,保存退出.修改coturn的配置文件 /etc/turnserver.conf,配置如下:#listening-device=enp2s0#listening-ip=192.168.1.183#relay-device=enp2s0#relay-ip=192.168.1.183verbosefingerprintlt-cred-mech#use-auth-secret#static-auth-secret=jalonrealm=demouser=jalon:0xa9f776c6470bab44567b2584863e7345user=jalon:jalonstale-nonce#cert=/etc/turn_server_cert.pem#pkey=/etc/turn_server_pkey.pemno-loopback-peersno-multicast-peersmobilityno-cli

上面的user=jalon:0xa9f776c6470bab44567b2584863e7345 是通过

# $ turnadmin -k -u jalon -r north.gov -p jalon# Output: 0xa9f776c6470bab44567b2584863e7345 生成的,在turn.config文件中有详细说明!

自动运行脚本

#!/bin/shexport PATH=$PATH:/home/jalon/google_appengineexport export GOPATH=/collider_rootcd /home/jalon/apprtcdev_appserver.py --host=0.0.0.0 ./out/app_engine &/collider_root/bin/collidermain -port=8089 -tls=false &turnserver &

测试截图

启动服务器后,两个手机分别安装AppRTC应用,在设置中将服务器地址设置为http://192.168.1.183后设置同一个房间登入。
这里写图片描述

相关问题:

在grunt build房间服务器是出错

Running "shell:buildAppEnginePackage" (shell) taskTraceback (most recent call last):  File "./build/build_app_engine_package.py", line 12, in <module>    import requestsImportError: No module named requestsWarning: Command failed: /bin/sh -c python ./build/build_app_engine_package.py src out/app_engineTraceback (most recent call last):  File "./build/build_app_engine_package.py", line 12, in <module>    import requestsImportError: No module named requests Use --force to continue.

安装
apt-get install -y python-requests后解决

go get collidermain出错

自动安装依赖出错,解决方法:
1. 先安装go环境

1.下载Go安装包wget https://storage.googleapis.com/golang/go1.5.3.linux-amd64.tar.gztar xvf go1.5.3.linux-amd64.tar.gz2.创建本地GO代码目录mkdir -p $HOME/gopath/src3.编辑$HOME/.profile添加export GOROOT=$HOME/goexport GOPATH=$HOME/gopath    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin退出终端重新打开或者登陆,GO环境就安装配置好了
  1. 安装信令服务器的依赖
cd $GOPATH/srcwget http://www.golangtc.com/static/download/packages/golang.org.x.net.tar.gztar xvf golang.org.x.net.tar.gzgo install golang.org/x/net/websocket/cd -依赖项安装完后,我们安装collidermain命令服务器程序:go install collidermain
0 0