博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebRTC服务器——Licode 环境搭建
阅读量:6820 次
发布时间:2019-06-26

本文共 5467 字,大约阅读时间需要 18 分钟。

WebRTC服务器——Licode 环境搭建

系统配置

阿里云服务器

Ubuntu 14.04.5 LTS

Docker 环境搭建

在一台空的机器上搭建docker环境,先要安装docker,执行下面的命令即可:

apt-get updateapt-get install docker.io

执行下面的shell脚本:

#!/bin/shMIN_PORT=30000;MAX_PORT=30050;docker run --name licode -p  3000:3000 -p $MIN_PORT-$MAX_PORT:$MIN_PORT-$MAX_PORT/udp -p 3001:3001  -p 8080:8080 -e "MIN_PORT=$MIN_PORT" -e "MAX_PORT=$MAX_PORT" -e "PUBLIC_IP=your_ip_address" lynckia/licode

没错任何错误的话,licode服务会自动运行起来,查看port:

root@test:/git/docker# netstat -nltpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program nametcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      865/sshd        tcp6       0      0 :::8080                 :::*                    LISTEN      4732/docker-proxytcp6       0      0 :::3000                 :::*                    LISTEN      4496/docker-proxytcp6       0      0 :::3001                 :::*                    LISTEN      4856/docker-proxy

有几点注意

  1. 需要把相关端口在阿里云服务器上打开,这里用到的端口有:
  • TCP 端口:8080 3000 3001
  • UDP 端口:30000/30050 UDP端口需要按照官方文档写,我自己开始使用了另外一个范围的端口,死活跑不起来。
  1. 不要用国外的服务器,这点当初没有注意到,开始在一台香港的服务器上搭建,一直报一个TURN服务器的问题,后来在国内的机器上的试了一下才通过,应该是TURN服务器穿透的时候有问题。

最后可以在Chrome或者火狐浏览器中输入地址:

http://your_ip_address:3001

作者在一台Mac和一台andorid上测试的,看一下效果,就不露脸了~~

830862-20190105223925695-1534154526.png

编译环境搭建

先按照官方文档的步骤操作:

克隆代码

git clone https://github.com/lynckia/licode.gitcd licode

安装依赖

安装Licode依赖的组件:

./scripts/installUbuntuDeps.sh

安装Licode

安装LIcode的各个组件:

./scripts/installNuve.sh./scripts/installErizo.sh

安装实例

./scripts/installBasicExample.sh

配置环境

因为是在阿里云服务器上搭建环境,有些关于服务器地址的配置需要修改,在licode_config.js中把下面的字段改成阿里云服务器的外网IP或者域名:

config.erizoController.publicIP = 'your_ip_address'; config.erizoController.hostname = 'your_ip_address';config.erizoAgent.publicIP = 'your_ip_address'; //default value: ''

改一下网卡的名字,一般都是eth0:

config.erizoAgent.networkinterface = 'eth0'; //default value: '':w

运行Licode

启动Licode服务:

./scripts/initLicode.sh

启动Licode实例:

./scripts/initBasicExample.sh

关于配置的一些问题

在浏览器里面输入下面的URL之后:

http://your_ip_address:3001

浏览器会报下面的错误:

ICE failed, add a TURN server and see about:webrtc for more details

看一下licode的配置文件licode_config.js,配置ICE server的地方:

config.erizoController.iceServers = [{'url': 'stun:stun.l.google.com:19302'}]; // default value: [{'url': 'stun:stun.l.google.com:19302'}]

只有一个STUN服务器链接,看来是需要自己添加一个TURN服务器,作者自己在本地搭建了一个coturn服务器,具体流程可以参考,作者采用的是编译安装。

配置coturn服务

在网络上搜索了很多资料来配置coturn,很多都没有成功,下面是作者自己机器上的配置:

#如果多网卡,记得此处设置为和你所用监听的IP相对应的eth listening-device=eth0listening-ip=your_local_addressexternal-ip=your_external_addresslistening-port=3478relay-device=eth0min-port=30000max-port=30050Verbosefingerprint#webrtc需要使用此选项 lt-cred-mech#use-auth-secret#static-auth-secret=123456#之前turnadmin中-r参数的值,此处要对应 realm=demostale-nonce#可以添加用户名和密码 user=demo:123456#测试期间可以使用example/etc中的pem,自己计算的话需要用到openssl,方法为: #sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/    turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes #填写pem目录即可,如 #cert=/root/cert/_cert.pemcert=/root/cert/mycert.pem#pkey=/root/cert/_pkey.pempkey=/root/cert/mycert.keyno-loopback-peersno-multicast-peersmobilityno-cli

关于如何添加用户名和密码,如何配置证书需要自行解决。

启动coturn服务

执行下面的命令:

turnserver -c path/turnserver.conf

碰到下面一堆log不要惊慌,这不是错误的log,只是在监听事件:

1112: timer_event_handler: timeout 0xc449b0: timer_handler1113: timer_event_handler: timeout 0xc461b0: rtcp_map_timeout_handler1113: timer_event_handler: timeout 0x7f2acc001c90: timer_handler1113: timer_event_handler: timeout 0x7f2acc002ea0: timer_timeout_handler1113: timer_event_handler: timeout 0x7f2ac4001c90: timer_handler1113: timer_event_handler: timeout 0x7f2ac4002ea0: timer_timeout_handler1113: timer_event_handler: timeout 0x7f2ac8001d30: timer_handler

修改Licode配置文件

添加了turn 选项:

config.erizoController.iceServers = [{'url': 'stun:stun.l.google.com:19302'},{'url':'turn:your_external_address:3478','username':'demo','credential':'123456'}]; //

最后重启licode服务和实例,在地址栏在此输入地址,如果请求TURN穿透,coturn服务会有类似下面的log:

86: read_client_connection:4436:start86: read_client_connection: data.buffer=0x7f26040033ec, data.len=10086: session 000000000000000005: peer 10.0.42.1 lifetime updated: 30086: session 000000000000000005: realm 
user
: incoming packet CREATE_PERMISSION processed, success86: write_client_connection:4220:start86: write_client_connection: prepare to write to s 0x7f260402817086: write_client_connection:4243:end86: read_client_connection:4542:end86: udp_server_input_handler:666:end86: udp_server_input_handler:628:start86: read_client_connection:4436:start86: read_client_connection: data.buffer=0x7f26040033ec, data.len=14086: handle_turn_send:2916:start86: handle_turn_send:3011:end86: session 000000000000000005: realm
user
: incoming packet SEND processed, success86: udp_server_input_handler:666:end86: udp_server_input_handler:628:start86: read_client_connection:4436:start86: read_client_connection: data.buffer=0x7f260401816c, data.len=140

浏览器控制台上有时会有下面的log:

ICE failed, your TURN server appears to be broken, see about:webrtc for more details

这是你的turnserver没有配置好,如果连接成功,最终浏览器控制台会有下面的链接成功的log:

DEBUG:  Event: ice-state-change erizo.js:28:39DEBUG:  Event: icestatechanged erizo.js:28:39INFO:  341271403301651300 - iceConnectionState: connected erizo.js:28:39DEBUG:  Event: onAddStream erizo.js:28:39DEBUG:  Event: stream-added erizo.js:28:39DEBUG:  Event: signaling_message_erizo

最后放一个搭建好的licode环境链接:

转载于:https://www.cnblogs.com/harlanc/p/10226614.html

你可能感兴趣的文章
Laravel Telescope入门教程(上)
查看>>
Linux配置ip 及网络问题排查
查看>>
程序员到底有多累,多辛苦?上百万程序员‘知乎上’吐槽
查看>>
C++ Primer 笔记——理解std::move
查看>>
AndroidStudio用Cmake方式编译NDK代码(cmake配置.a库)
查看>>
Kafka入门
查看>>
【Infragistics教程】Sketch Prototypes的可用性研究和用户视频
查看>>
移植Modbus到STM32F103(4):串口数据长度和校验的支持
查看>>
linux命令,如何根据关键字查询,如何替换某个关键字,vi中如何复制
查看>>
IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术原理
查看>>
js算法: 图的两种表示方法以及广度优先算法
查看>>
CSS定位问题(3):相对定位,绝对定位
查看>>
如何给网站加入优雅的实时反爬虫策略
查看>>
手动配置无线网卡
查看>>
OSChina 周四乱弹 ——黑丝短裙java程序员同事
查看>>
设置iptables之后不能正常访问ftp解决方法
查看>>
maven使用国内镜像
查看>>
移动端rem布局
查看>>
改变状态栏的颜色
查看>>
UIImagePickerController说明
查看>>