CentOS下配置webrtc服务器

主要参考:Ubuntu下配置webrtc服务器

————————————————————————————————————————————————

原理介绍:<以下文字copy自上文>

  • 房间服务器

房间服务器是用来创建和管理通话会话的状态维护,是双方通话还是多方通话,加入与离开房间等等,我们暂时沿用Google部署在GAE平台上的AppRTC这个房间服务器实现,该GAE App的源码可以在github.com上获取.该实现是一个基于Python的GAE应用,我们需要下载Google GAE的离线开发包到我们自己的Linux服务器上来运行该项目,搭建大陆互联网环境下的房间服务器。

  • 信令服务器

信令服务器是用来管理和协助通话终端建立去中心的点对点通话的一个角色.这个角色要负责一下任务:

  • 用来控制通信发起或者结束的连接控制消息
  • 发生错误时用来相互通告的消息
  • 各自一方媒体流元数据,比如像解码器、解码器的配置、带宽、媒体类型等等
  • 两两之间用来建立安全连接的关键数据
  • 外界所能看到的网络上的数据,比如广域网IP地址、端口等

信令服务器的具体协议实现没有严格规定,只要实现功能就OK.
我们这里依然沿用Google提供的基于GO语言和WebSocket的信令服务器Collider.和上面的房间服务器一并在Github上可以获取.获取到我们自己的Linux服务器上用GO语言的运行环境来运行该信令服务器.

  • coturn打洞服务器

我们目前大部分人连接互联网时都处于防火墙后面或者配置私有子网的家庭(NAT)路由器后面,这就导致我们的计算机的IP地址不是广域网IP地址,故而不能相互之间直接通讯. 正因为这样的一个场景,我们得想办法去穿越这些防火墙或者家庭(NAT)路由器,让两个同处于私有网络里的计算机能够通讯起来.
TURN(Traversal Using Relay NAT,允许在TCP或UDP的连线上跨越 NAT 或防火墙. TURN是一个Client-Server协议。TURN的NAT穿透方法与STUN类似,都是通过取得应用层中的公有地址达到NAT穿透,但实现TURN client的终端必须在通讯开始前与TURN server进行交互,并要求TURN server产生"relay port", 也就是relayed-transport-address.这时 TURN server会建立peer,即远端端点(remote endpoints), 开始进行中继(relay)的动作,TURN client利用relay port将资料传送至peer,再由peer转传到另一方的TURN client.通过服务器新产生的peer来进行数据的中转.
ICE协议就是综合前面2种协议的综合性NAT穿越解决方案.
通过offer/answer模型建立基于UDP的通讯。ICE是offer/answer模型的扩展,通过在offer和answer的SDP(Session Description Protocol)里面包含多种IP地址和端口,然后对本地SDP和远程SDP里面的IP地址进行配对,然后通过P2P连通性检查进行连通性测试工作,如果测试通过即表明该传输地址对可以建立连接。其中IP地址和端口(也就是地址)有以下几种:本机地址、通过STUN服务器反射后获取的server-reflexive地址(内网地址被NAT映射后的地址)、relayed地址(和TURN转发服务器相对应的地址)及Peer reflexive地址等。


搭建服务器:

  github上的appRTC源代码工程:appRTC

  官网配置教程:appRTC配置教程

  •  配置环境
             设置

             验证java环境并安装

java -version
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-i586.rpm"
rpm -ivh jdk-8u102-linux-i586.rpm
             配置java环境变量

             安装python-webtest

sudo yum install python-webtest
             安装npm【会附带将依赖的nodejs一起安装】

官方安装文档    setup_9.x里面的9代表版本号第一位,可以根据所需替换。如果要卸载npm,可以使用yum remove nodejs

yum install -y gcc-c++ make
curl -sL https://rpm.nodesource.com/setup_9.x | sudo -E bash -
yum install nodejs
npm --version #查看npm版本

安装grunt-cli【因为我也不是很懂grunt和grunt-cli的关系,所以分别执行了一次安装命令】

npm install -g grunt
npm install -g grunt-cli
  • 下载源码

s

你可能感兴趣的:(CentOS下配置webrtc服务器)