WebRTC服务器的配置 - Go语言中文社区

WebRTC服务器的配置


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 nodejs
sudo apt-get install -y npm
sudo npm install -g npm
sudo apt-get install nodejs-legacy
sudo npm -g install grunt-cli
sudo apt-get install python-webtest
sudo apt-get install -y python-requests
sudo apt-get install golang-go
sudo apt-get install -y mercurial

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

sudo vi /etc/profile
export PATH=$PATH:/home/google_appengine
source /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_engine
INFO     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:41124
INFO     2017-01-17 08:35:05,121 dispatcher.py:197] Starting module "default" running at: http://0.0.0.0:8080
INFO     2017-01-17 08:35:05,128 admin_server.py:116] Starting admin server at: http://localhost:8000

配置信令服务器

  1. 创建服务器目录:
sudo mkdir -p /collider_root/src
sudo chmod 777 /collider_root/src
  1. 修改环境变量
sudo vi /etc/profile
export GOPATH=/collider_root
source /etc/profile
  1. 拷贝服务器源码文件
将apprtcsrccollider 目录文件拷贝至/collider_root/src目录下
  1. 开始编译
进入/collider_root/src目录下,执行:
go get collidermain
go 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 update
sudo apt-get install gdebi-core
sudo 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.183

verbose

fingerprint

lt-cred-mech

#use-auth-secret

#static-auth-secret=jalon

realm=demo

user=jalon:0xa9f776c6470bab44567b2584863e7345
user=jalon:jalon

stale-nonce

#cert=/etc/turn_server_cert.pem

#pkey=/etc/turn_server_pkey.pem

no-loopback-peers

no-multicast-peers

mobility

no-cli

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

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

自动运行脚本

#!/bin/sh
export PATH=$PATH:/home/jalon/google_appengine
export export GOPATH=/collider_root
cd /home/jalon/apprtc
dev_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) task
Traceback (most recent call last):
  File "./build/build_app_engine_package.py", line 12, in <module>
    import requests
ImportError: No module named requests
Warning: Command failed: /bin/sh -c python ./build/build_app_engine_package.py src out/app_engine
Traceback (most recent call last):
  File "./build/build_app_engine_package.py", line 12, in <module>
    import requests
ImportError: 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.gz
tar xvf go1.5.3.linux-amd64.tar.gz
2.创建本地GO代码目录
mkdir -p $HOME/gopath/src
3.编辑$HOME/.profile添加
export GOROOT=$HOME/go
export GOPATH=$HOME/gopath    
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
退出终端重新打开或者登陆,GO环境就安装配置好了
  1. 安装信令服务器的依赖
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/
cd -
依赖项安装完后,我们安装collidermain命令服务器程序:
go install collidermain
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/u010657219/article/details/54613298
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-08-26 15:56:05
  • 阅读 ( 1968 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢