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_pairelse:wss_url = 'ws://' + wss_host_port_pair + '/ws'wss_post_url = 'http://' + wss_host_port_pairreturn (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. 拷贝服务器源码文件
将apprtc\src\collider 目录文件拷贝至/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.183verbosefingerprintlt-cred-mech#use-auth-secret#static-auth-secret=jalonrealm=demouser=jalon:0xa9f776c6470bab44567b2584863e7345
user=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/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 requestsUse --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

WebRTC服务器的配置相关推荐

  1. CentOS下配置webrtc服务器

    主要参考:Ubuntu下配置webrtc服务器 ------------------------------------------------ 原理介绍:<以下文字copy自上文> 房间 ...

  2. p2p webrtc服务器搭建系列1: 房间,信令,coturn打洞服务器

    中继(relay) 在RTCPeeConnection中,使用ICE框架来保证RTCPeerConnection能实现NAT穿越 ICE,全名叫交互式连接建立(Interactive Connecti ...

  3. webrtc服务器压测工具使用

      主要介绍3个开源的webrtc压力测试框架–kite,pion及srs_bench,以janus服务器为例. 1.KITE    KITE整合了Selenium和Aullure.Selenium ...

  4. webrtc服务器janus的一点看法

    接触webrtc也有一年多时间了,刚开始由于对webrtc也不熟悉,为了快速开发以及出产品,最终选择了开源webrtc服务器janus,然后做了一些自己的定制开发,下面先对janus做一个简单的介绍. ...

  5. 云服务器搭建配置以及服务器开发相关

    Cloud Server Building and Server Development Relevant Resource Collection 云服务器搭建配置以及服务器开发相关 有用的参考链接 ...

  6. AppRTC(WebRTC)服务器搭建

    转自:https://www.jianshu.com/p/a19441034f17 前言 最近研究了几天 appr.tc 服务器的搭建,主要目的是想在本地搭建一套 webrtc 服务器环境,可以做一些 ...

  7. 基于Ubuntu16.04(64位)搭建WebRTC服务器(目前搭在局域网)

    我的电脑是win764位,WebRTC只能在Linux下搭建,所以我就在虚拟机Ubuntu16.04上搭建的服务器,Ubuntu16.04的apt源不好,有些更新下载不了,就算是翻墙了,还是找不到资源 ...

  8. 企业级音视频会议实战之webrtc服务器janus品尝实战

    企业级音视频会议实战之webrtc服务器janus品尝实战 文章目录 企业级音视频会议实战之webrtc服务器janus品尝实战 前言 单纯使用webrtc的缺点 使用webrtc服务器之后(这里以j ...

  9. Webrtc服务器搭建(基于公网环境)

    webrtc服务器环境搭建 (基于公网环境) Last Modified Date: 2017/8/2 目录 1. 搭建平台 2. 软件安装 3. 搭建房间服务器(Room Server) 4. 搭建 ...

最新文章

  1. Tomcat 启动卡住
  2. 73-递归函数1:阶乘
  3. 2017python学习的第五天:模块
  4. 亚马逊智能语音助手Alexa大举招聘 放出400个职位
  5. Nacos配置中心-多配置文件加载
  6. commit work蒙牛 PCM partner channel management
  7. 最短路的几种算法及其优化(模板)
  8. Cubieboard2 debian
  9. ABP入门系列(8)——Json格式化
  10. jmeter php网站,jmeter实战之phpwind随机回帖/发帖
  11. 计算机专业在沈阳有什么发展,985 计算机专业在全国 TOP10 在沈阳
  12. python string转int_Python编程入门:time模块常用技巧
  13. UOS开启开发者模式
  14. JNI/NDK入门指南之JavaVM和JNIEnv
  15. 九大内置对象和四大作用域
  16. Hibernate 学习的书-夏昕(3)
  17. 给Vue实例添加新的属性
  18. 无需软件网页星号密码查看
  19. 如何使用Excel表格精准分析PT100温度阻值关系?
  20. 19HTML5期末大作业:动画漫影视网站设计——动画漫展学习资料电影模板(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品 课程设计网页规划与设计 计算机毕设网页设计源

热门文章

  1. 他爱在黑暗中漫游(来自《德国诗选》)
  2. 不懂七大设计原则等于白学软件开发篇
  3. Oracle OAF 学习小结(2)- 增删改查/LOV/Button/Sequence 的完整案例开发
  4. 商业合作保密协议 (2)
  5. 《Spring Boot极简教程》第8章 Spring Boot集成Groovy,Grails开发
  6. 订阅号如何获取用户基本信息
  7. 锁存器怎么使用c语言编程,基础——(4)SR Latch(SR锁存器)
  8. 你的代码被冰冻到北极了吗?
  9. FastReport安装(中文版)
  10. 戴着镣铐起舞的算法市场