2022年webRTC服务器搭建 .pdf

上传人:Che****ry 文档编号:34880387 上传时间:2022-08-19 格式:PDF 页数:6 大小:134.93KB
返回 下载 相关 举报
2022年webRTC服务器搭建 .pdf_第1页
第1页 / 共6页
2022年webRTC服务器搭建 .pdf_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《2022年webRTC服务器搭建 .pdf》由会员分享,可在线阅读,更多相关《2022年webRTC服务器搭建 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、当前位置:首页 专业 WebRTC 正文 0WebRTC 服务器搭建已有 261 阅读此文人 - 2016.06.29 - WebRTC - 刘通原文1.WebRTC后台服务 :通话的房间服务器(Room Server)房间服务器是用来创建和管理通话会话的状态维护,是双方通话还是多方通话,加入与离开房间等等,我们暂时沿用 Google部署在 GAE 平台上的 AppRTC 这个房间服务器实现,该 GAE App的源码可以在上获取 .该实现是一个基于Python的 GAE 应用 ,我们需要下载Google GAE的离线开发包到我们自己的 Linux 服务器上来运行该项目,搭建大陆互联网环境下的房

2、间服务器. 通话的信令服务器(Signaling Server)信令服务器是用来管理和协助通话终端建立去中心的点对点通话的一个角色。这个角色要负责一下任务:1)用来控制通信发起或者结束的连接控制消息2)发生错误时用来相互通告的消息3)各自一方媒体流元数据,比如像解码器、解码器的配置、带宽、媒体类型等等4)两两之间用来建立安全连接的关键数据5)外界所能看到的网络上的数据,比如广域网IP 地址、端口等信令服务器的具体协议实现没有严格规定,只要实现功能就OK. 我们这里依然沿用Google提供的基于GO语言和 WebSocket的信令服务器Collider. 和上面的房间服务器一并在Github上可

3、以获取 .获取到我们自己的 Linux 服务器上用GO 语言的运行环境来运行该信令服务器. 防火墙打洞服务器(STUN/TURN/ICE Server)我们目前大部分人连接互联网时都处于防火墙后面或者配置私有子网的家庭(NAT) 路由器后面 ,这就导致我们的计算机的IP 地址不是广域网IP 地址 ,故而不能相互之间直接通讯. 正因为这样的一个场景,我们得想办法去穿越这些防火墙或者家庭(NAT) 路由器 ,让两个同处于私有网络里的计算机能够通讯起来. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - -

4、 - - 第 1 页,共 6 页 - - - - - - - - - STUN(Simple Traversal of UDP over NATs,NAT 的 UDP 简单穿越 ); STUN 协议服务器就是用来解决这些问题 :1、探测和发现通讯对方是否躲在防火墙或者NAT 路由器后面 . 2、确定内网客户端所暴露在外的广域网的IP 和端口以及NAT 类型等信息 ;STUN 服务器利用这些信息协助不同内网的计算机之间建立点对点的UDP 通讯 . STUN 协议可以很好的解决一般家用(NAT) 路由器环境的打洞问题,但是对于大部分的企业的网络环境就不是很好了 . 这时需要一个新的解决方案:TUR

5、N(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

6、 )的动作 ,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 连通性检查进行连通性测

7、试工作,如果测试通过即表明该传输地址对可以建立连接。其中IP 地址和端口(也就是地址)有以下几种:本机地址、通过STUN 服务器反射后获取的 server-reflexive地址(内网地址被NAT 映射后的地址)、 relayed地址(和 TURN 转发服务器相对应的地址)及 Peer reflexive地址等。2.房间服务器与信令服务器搭建:我们把这一系列后台服务器搭建在公网的一个Ubuntu Linux服务器中 . 服务器的代码我们选用GoogleChrome的开源项目 ,该项目可以在Github找到: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -

8、- - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - https:/ https:/ 需要依赖Google App Engine SDK for Python 和 Grunt.先搭建房间服务器AppRTC1.首先我们安装Grunt: cheetahlocalhost:/$ sudo apt-get install npm cheetahlocalhost:/$ sudo apt-get install nodejs-legacy cheetahlocalhost:/$ sudo npm -g install grunt

9、-cli;1.下载该项目的源码到某个目录: cheetahlocalhost:/$ cd ; cheetahlocalhost:/$ git clone https:/ Shell 切换当前工作目录到上一步的下载的项目目录 webrtc下,然后安装 Grunt以及 Grunt的依赖 : cheetahlocalhost:/$ cd ; cheetahlocalhost:/$ git clone https:/ 1.运行 AppRTC房间服务器之前我们需要Grunt 编译一下该项目的js 文件之类 : cheetahlocalhost:/webrtc$ grunt;上面的编译过程会自动下载安装G

10、oogle App Engine SDK至当前目录 .cheetahlocalhost:/webrtc$ ls bower.json google_appengine Gruntfile.js LICENSE.md README.md samples build google_appengine_1.9.17.zip images node_modules run_python_tests.py webtest-master CONTRIBUTING.md grunt-chrome-build index.html package.json run_python_tests.sh webtes

11、t-master.tar.gz 下一步 ,我们需要把Google App Engine SDK的目录加入系统环境变量$PATH, 并使之生效 .cheetahlocalhost:/webrtc$ echo “export PATH=$PATH:$PWD/google_appengine” /.bash_profile cheetahlocalhost:/webrtc$ source /.bash_profile 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 -

12、- - - - - - - - 这个时候我们就可以直接运行我们的房间服务器AppRTC 了.用下面的命令来开启(主机名:vpn.wuqiong.tk可以用自己的给我钱IP 地址代替 ): cheetahlocalhost:/webrtc$ dev_appserver.py host vpn.wuqiong.tk samples/web/content/apprtc/再搭建信令服务器信令服务器我们依然采用Google Chrome WebRTC项目里提供的用GO 语言编写的基于websocket的信令服务器 :Collider.我们需要先安装Go 语言运行环境支持:cheetahlocalhos

13、t:/webrtc$ sudo apt-get install golang-go然后在我们的用户目录新建一个目录(collider_root) 来存放这个Collider 的 go 代码程序 .cheetahlocalhost:/webrtc$ mkdir -p /collider_root;cheetahlocalhost:/webrtc$ export COLLIDER_ROOT=$HOME /collider_root; /也可以加入 /.bash_profile下一步就是链接wenrtc 项目目录下面的collider 代码目录到 $COLLIDER_ROOT/src下去,准备后续的

14、编译工作 ;cheetahlocalhost:/webrtc$ ln -sf $PWD /samples/web/content/apprtc/collider/collider$COLLIDER_ROOT/src/cheetahlocalhost:/webrtc$ ln -sf $PWD /samples/web/content/apprtc/collider/collidermain$COLLIDER_ROOT/src/cheetahlocalhost:/webrtc $ ln -sf $PWD /samples/web/content/apprtc/collider/colliderte

15、st$COLLIDER_ROOT/src/一切准备之后 ,我们就主要编译安装Collider 了:cheetahlocalhost:/webrtc$ go get collidermaincheetahlocalhost:/webrtc$ go install collidermain这个时候 ,信令服务器的二进制程序就安装到了$COLLIDER_ROOT/bin下去了 . 如下命令就可以开启运行信令服务器 :cheetahlocalhost:/webrtc$ $COLLIDER_ROOT/bin/collidermain -port=8089 -tls =false信令服务器暂时用非tls

16、方式运行 .因为我们自签名的证书Websocket通讯不了 .3.STUN/TURN/ICE服务器的搭建我们选择有更丰富功能的coTurn 作为我们的NAT 穿越打洞服务器,该项目是一个C/C+ 语言的开源项目 ,项目地址 :https:/ ,根据我们的服务器类型选择下载 ,我现在选择Debian 和 Ubuntu 系统的包 :名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - cd ;wget http:/turnserver.o

17、pen-sys.org/d t-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

18、去掉注释 ,保存退出 .再根据实际情况编辑coturn 的配置文件/etc/turnserver.conf,比如我打开的配置项如下:listening-device=eth0listening-ip =106.186.127.xxxrelay-device=eth0relay-ip =106.186.127.xxxVerbosefingerprintlt-cred-mechuse-auth-secretstatic-auth-secret=diveinedu user =diveinedu:0 x06b2afcf07ba085b7777b481b1020391user =diveinedu:d

19、iveinedustale-noncecert=/etc/turn_server_cert.pempkey=/etc/turn_server_pkey.pemno-loopback-peersno-multicast-peerssha256mobilityno-cli上面 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穿墙服务器

20、的一切配置完成之后, 万事俱备 ,之前启动命令了:service coturn start;房间服务器和信令服务器的设置三个服务器都搭建完成之后,我们需要多一定的整合配置,使他们能一起工作: apprtc 目录下的 constants.py是一些常量配置信息的配置文件,比如我的做了如下设置:#TURN_BASE_URL = ,https:/?TURN_BASE_URL =,http:/?#TURN_URL_TEMPLATE = ,%s/turn?username=%s&key=%s?TURN_URL_TEMPLATE =,%s/turn.php?username=%s&key=%s,#CEOD

21、_KEY = ,4080218913?CEOD_KEY =,diveinedu?#WSS_HOST_PORT_PAIR = ,apprtc-ws.webrtc.org:443? WSS_HOST_PORT_PAIR =,:8089?由于我们的信令服务器没有开启安全Socket 模式 ,所以我们要对应的改一下apprtc 的代码 , 做 apprtc.py 中如下修改 :名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - defget

22、_wss_parameters(request): ws_host_port_pair = request .get(,wshpp?) ws_tls =request .get( ,wstls?) ifnot ws_host_port_pair: ws_host_port_pair =constants .WSS_HOST_PORT_PAIR if ws_tls and ws_tls =,false?: wss_url =,ws:/?+ws_host_port_pair +,/ws?wss_post_url =,http:/?+ ws_host_port_pair else : wss_url

23、 =,ws:/?+ws_host_port_pair+,/ws?wss_post_url =,http:/?+ ws_host_port_pair return (wss_url, wss_post_url)把原来的 wss 和 https 的 scheme 都改为 ws 和 http, 不要让客户端或者浏览器去使用SSL 链接 .当然 ,如果有第三方根证书的签名机构颁发的证书,那就不需要这样了而对应的信令服务器也需要稍微做设置: 编辑 collider/collidermain/main.go,修改设置自己的房间服务器URL:/var roomSrv = flag.String(“room-

24、server ”, “https:/”, “The origin of the room server ”)var roomSrv = flag.String(“room -server ”, “http:/:8080/”, “The origin of the room server”)经过这一些简单的房间服务器和信令服务器的定制设置之后,我们就搭建了一套基于Google 项目的属于自己的 WebRTC 的简单服务了 .用谷歌浏览器打开http:/:8080/ ,注册房间之后就可以视频通话了.当然结合之前的WebRTC for iOS 框架就可以浏览器和iOS 的原生应用直接视频通话了.名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁