http://www.jianshu.com/p/c55ecf5a3fcf

http://io.diveinedu.com/2015/02/05/%E7%AC%AC%E5%85%AD%E7%AB%A0-WebRTC%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%90%AD%E5%BB%BA.html

https://github.com/webrtc/apprtc

http://www.cnblogs.com/cther/p/4604599.html

后台运行的命令用:前面加 nohup 后面加 &

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

(一)
先搭建房间服务器AppRTC:

sudo apt-get update
sudo apt-get install git
sudo git clone https://github.com/webrtc/apprtc
sudo apt-get install nodejs
sudo apt-get install npm
sudo npm install -g npm
sudo apt-get install nodejs-legacy
sudo npm -g install grunt-cli

还需要下载工具文件才能运行服务器:
https://cloud.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python
下载google_appengine_1.9.24.zip。
unzip google_appengine_1.9.24.zip
sudo vi /etc/profile
export PATH="$PATH:/path/to/google_appengine/"
source /etc/profile

然后修改配置文件的几个地方,
一、修改文件src/app_engine/apprtc.py
搜索 "wss:" 和 "https:" (注意冒号)
可以在方法 get_wss_parameters 里搜索到,
这里需要把 wss: 替换成 ws:、把 https: 替换成 http:。

搜索make_pc_config,在config里面加turnserver和stunserver地址和用户密码,xu是用户名,密码是1234.如下:

def make_pc_config(ice_transports):
config = { 'iceServers': [{
"url": "stun:198.11.178.145"
},{
"url": "turn:xu@198.11.178.145",
"credential": "1234"
}] };

保存退出,就可以了。

二、修改文件src/app_engine/constants.py
① 搜索 TURN_BASE_URL
  将等号后面的字符串替换为 turnserver的地址,如:'http://198.11.178.145:3478'

② 搜索 WSS_INSTANCES
  可以看到,这里被配置为了一个数组,不过我们只有单台服务器。所以先删掉数组的其他元素,只保留一个。
  在保留下来的元素中,我们只修改 WSS_INSTANCE_HOST_KEY 对应的值即可。
  将其改为上面 Collider 服务器的可访问地址。比如:198.11.178.145:8089。不需要协议,没有 URI。
改完以上两处,可以保存退出了。

cd /apprtc (apprtc目录下有build、src、tool目录还有一些文件,切换到这个目录然后在执行以下命令)
npm install
sudo apt-get install python-webtest
grunt build

执行成功,出来out文件夹。

最后运行房间服务器:

cd /apprtc

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

(二)
搭建信令服务器,可以参照https://github.com/webrtc/apprtc/tree/master/src/collider步骤。
刚才通过https://github.com/webrtc/apprtc下载的源码里面就含有了信令服务器的代码。在src\collider目录下。
先安装依赖的golang环境。
sudo apt-get install golang-go
mkdir -p /collider_root
sudo /etc/profile
export GOPATH=/collider_root
source /etc/profile
将src\collider目录下的collider,collidermain,collidertest三个文件夹拷贝到/collider_root/src目录下。

先修改配置文件collider_root/src/collidermain/main.go中的房间服务器地址。
var roomSrv = flag.String("room-server", "http://198.11.178.145:8080/", "The origin of the room server")
修改后保存。

cd /collider_root/src
sudo apt-get install mercurial
go get collidermain
go install collidermain
成功编译后会在collider_root目录下生成bin和pkg文件夹,可执行程序在bin中。

最后运行信令服务器。
/collider_root/bin/collidermain -port=8089 -tls=false

(三)
搭建turnserver。

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

sudo apt-get install gdebi-core

sudo gdebi coturn*.deb

vim /etc/default/coturn

把上面打开编辑的文件中的这一行TURNSERVER_ENABLED=1去掉注释,保存退出.

vim /etc/turnserver.conf

删除所有改为:

listening-device=eth0
relay-device=eth0
Verbose
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=1234
user=xu:1234
user=xml:1234
stale-nonce
cert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem
no-loopback-peers
no-multicast-peers

上面cert和pkey配置的自签名证书用Openssl命令生成:
sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes

启动turnserver 。
turnserver -c /etc/turnserver.conf -v

然而怎么单独测试turnserver为webrtc服务成功呢?

就是自己部署下面这个例子,这个部署很简单。
http://chinawebrtc.org/forums/topic/%E4%BD%BF%E7%94%A8webrtc%E6%90%AD%E5%BB%BA%E5%89%8D%E7%AB%AF%E8%A7%86%E9%A2%91%E8%81%8A%E5%A4%A9%E5%AE%A4-%E5%85%A5%E9%97%A8%E7%AF%87/
https://github.com/LingyuCoder/SkyRTC-demo

例子使用说明:

安装Node.js及npm环境
下载源码到本地,并解压缩
移动到解压后的目录下
使用命令npm install安装所需要的库
运行命令node server.js
访问localhost:3000#roomName查看效果,其中roomName为进入的房间名,不同房间的用户无法互相通信

然后根据说明,用4G手机谷歌浏览器跟电脑通话。

如果在虚拟机里请使用桥接模式:直接连接物理网络,勾选复杂网络连接状态。

http://198.11.178.145:8080

搭建自己的AppRTCDemo服务器的更多相关文章

  1. 用ProGet搭建内部的NuGet服务器

    最近团队内部用的一个很简陋的NuGet服务器出问题了,nuget push发包,客户端显示发布成功,服务器上就是没有.懶得再去排查这个问题,早就想换掉这个过于简陋的NuGet服务器,借此机会直接弃旧迎 ...

  2. 搭建自己的Nuget服务器

    序言 你们公司有没有好多项目,有没有好多类库,你们的类库是在tfs中管理,还是svn或者github,又或者是各自为政版本类库随意使用? 那么你们使用者写类库的时候方便吗? 有没有更新下载,版本不一致 ...

  3. 【日记】搭建一个node本地服务器

    用node搭建一个本地http服务器.首先了解htpp服务器原理 HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端.HTTP协议采用了请求/响应模型 ...

  4. [翻译]用 Puppet 搭建易管理的服务器基础架构(4)

    我通过伯乐在线翻译了一个Puppet简明教程,一共分为四部分,这是第四部分. 原文地址:http://blog.jobbole.com/89214/ 本文由 伯乐在线 - Wing 翻译,黄利民 校稿 ...

  5. [翻译]用 Puppet 搭建易管理的服务器基础架构(3)

    我通过伯乐在线翻译了一个Puppet简明教程,一共分为四部分,这是第三部分. 本文由 伯乐在线 - Wing 翻译,黄利民 校稿.未经许可,禁止转载!英文出处:Manuel Kiessling.欢迎加 ...

  6. 搭建git for windows服务器(100%可以成功)

    既然Git在Linux下面非常好用,为什么还要搭建git windows的服务器,因为不是所有的用户都需要在linux下面做开发,对吧,还有很多用户选择使用windows做开发. 看到很多网友尝试部分 ...

  7. 搭建git for windows服务器

    文档出处 :http://blog.csdn.net/code_style/article/details/38764203 http://blog.csdn.net/aaron_luchen/art ...

  8. 用VLC Media Player搭建简单的流媒体服务器

    VLC可以作为播放器使用,也可以搭建服务器. 在经历了Helix Server和Darwin Streaming Server+Perl的失败之后,终于找到了一个搭建流媒体简单好用的方法. 这个网址中 ...

  9. 用nodejs搭建一个简单的服务器

    使用nodejs搭建一个简单的服务器 nodejs优点:性能高(读写文件) 数据操作能力强 官网:www.nodejs.org 验证是否安装成功:cmd命令行中输入node -v 如果显示版本号表示安 ...

随机推荐

  1. Jquery.ajax报parseerror Invalid JSON错误的原因和解决方法:不能解析

    (默认: 自动判断 (xml 或 html)) 请求失败时调用时间.参数有以下三个:XMLHttpRequest 对象.错误信息.(可选)捕获的错误对象.如果发生了错误,错误信息(第二个参数)除了得到 ...

  2. ICON小工具如何使用

    对于ICON这个小资源,我们可以手动绘制.选择bmp图形的大小,尤其是旁边的选择工具(矩形或者弧形),我们可以通过选择工具挪动我们手动绘制的图标,其实图标只有中间那部分有用,其他没有用.还有最右边色拾 ...

  3. 新安装的金蝶K3软件,初始化后,在基础资料中对于币别,科目,部门,客户等资料均无法新增,无法引出,等操作,K3CASysSet.dll

    新装K3,新建的帐套.导入科目点菜单或新增button均无反应,币别.客户等辅助核算项目也新增也无法保存. 在电脑上新安装的金蝶K3软件.初始化后.在基础资料中对于币别,科目,部门,客户等资料均无法新 ...

  4. Spring 小记

    本作品由Man_华创作,采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.基于http://www.cnblogs.com/manhua/上的作品创作. 使用STS新建spr ...

  5. 关于iOS Tabbar的一些设置

    事实上iOS Tabbar的可定制性很高,我们没有必要反复造轮子,以下是笔者收集的一些tabbar的经常使用设置.希望对大家有所帮助. 设置tabbar选中颜色 iOS7设置例如以下: [self.t ...

  6. request获取数据的几种方法

    1.request.getparameter(); String value=request.getparameter("key"); 2.request.getParameter ...

  7. ubuntu16.04----jdk---install----config

    1.下载jdk. 2.验证java是否安装,使用java -version命令,如下图所示说明没有安装: 3.在usr目录中创建一个jdk-8目录,如下图所示: 4.配置系统环境变量,编辑/etc/p ...

  8. 【Android】第三方库使用的问题集

    Google/百度地图Key的获取 百度地图UnsatisfiedLinkError错误 async-http-client中的FATAL EXCEPTION Google/百度地图Key的获取 无论 ...

  9. Emgu安装配置及使用

    前言:项目需要,需使用图像处理来完成机械臂从运动的皮带上抓取物体的功能,所以又重拾视觉与图像处理内容. 内容:Emgu是OpenCV的一个跨平台的.NET封装,结构如下图所示: 下载地址:http:/ ...

  10. TP框架---thinkphp基础知识

    php框架    发瑞 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困 ...