大家好,又见面了,我是你们的朋友全栈君。
1.ICE服务器介绍
代码语言:javascript复制 最近一段时间在做关于webrtc语音视频通话,网上免费的公开的STUN服务器可以用于测试,使用起来响应时间非常的慢,用起来不爽。作为一个有情怀的技术人员的我,就需要自己搭建了coturn服务器,现在分享给大家。
前提先介绍一下ICE服务器,ICE服务器包含了STUN和TURN两部分,实际上我们就需要TURN服务器就可以进行P2P穿墙。coturn服务器是在turnserver上增加了部分高级特性(感谢项目作者,为我们提供了很好的环境)。coturn支持cp, udp, tls, dtls 连接。coturn支持linux bsd solaris Mac os 系统,暂不支持windows系统。
我是在公网部署搭建coturn服务器,来进行STUN服务器进行穿透和TURN服务器中转。具体思想和步骤是这样的。先会尝试直连,直连失败后通过STUN服务器进行穿透,若穿墙失败则通过TURN服务器中转。
2.安装coturn
2.1安装依赖组件
代码语言:javascript复制安装coturn前需要安装所需要的组件
sudo apt-get install libssl-dev
sudo apt-get install libevent-dev
sudo apt-get install libpq-dev
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
sudo apt-get install libhiredis-dev
sudo apt-get install git
2.2 下载编译安装coturn
代码语言:javascript复制命令如下
git clone https://github.com/coturn/coturn
cd coturn
./configure
make
sudo make install
3.配置coturn
3.1.拷贝默认配置
coturn 源码的 example/etc 目录中,有提供 coturn 的默认配置文件,以供我们使用,我们需要分别拷贝 turnserver 所需要的三个配置文件>
首先在 /etc 目录下创建 turnserver 配置的存放目录
代码语言:javascript复制sudo mkdir /etc/turnserver/
拷贝 conf 配置脚本 进入 coturn 目录
代码语言:javascript复制cd coturn
sudo cp ./examples/etc/turnserver.conf /etc/turnserver/
拷贝 pem 秘钥文件 将 *.pem 秘钥文件也拷贝到 /etc/turnserver/ 目录下
代码语言:javascript复制sudo cp ./examples/etc/turn_server_*.pem /etc/turnserver/
4.生成 coturn 用户
为了安全起见,需要配置用户和密码,也就是链接的用户和密码,这里还有域名。 域名可以不用放上
代码语言:javascript复制sudo turnadmin -a -u 用户名 -p 密码 -r 域名
执行成功后,可通过 turnadmin -l 既可查看:
代码语言:javascript复制sudo turnadmin -a -u abcabc -p abcabc -r beijing.com
turnadmin -l
当然我们也可以到了启动 turnserver 的时候设置用户名和密码。
5.配置turnserver.conf
编辑之前的拷贝出来的turnserver.conf
我们先看看本地网卡名字和地址,记下来,下面我们会用到
代码语言:javascript复制ifconfig
现在我们就修改turnserver.conf配置,找到下面的参数进行修改。
代码语言:javascript复制relay-device=eth0 #与ifconfig查到的网卡名称一致
listening-ip=172.17.0.6 #内网IP
listening-port=3478
tls-listening-port=5349
relay-ip=172.17.0.6
external-ip=49.234.237.xxx #公网IP
relay-threads=50
lt-cred-mech
cert=/etc/turnserver/turn_server_cert.pem
pkey=/etc/turnserver/turn_server_pkey.pem
pidfile=”/var/run/turnserver.pid”
min-port=49152
max-port=65535
user=abcabc:abcabc #用户名密码,创建IceServer时用
cli-password=qwerty #这个是新增的一定要加上
上面配信息修改完就到这里就算完成了,接下来我们来把turnserver启动。
6.启动turnserver
代码语言:javascript复制turnserver -o -a -f -user=abcabc:abcabc
如果用到云服务器,需要到云服务器开通3478端口。 如果不是云服务器打开3478端口,然后重启防火墙即可
代码语言:javascript复制添加
firewall-cmd --zone=public --add-port=3478/udp --permanent
firewall-cmd --zone=public --add-port=3478/tcp --permanent
重新载入
firewall-cmd --reload
重启防火墙
systemctl restart firewalld
7.ICE测试
turnserver测试Trickle ICE https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
8.心得
我使用腾讯云服务器,1核2内存1M配置,用起来比公共ICE服务器的响应速度快多了,ICE服务器不需要很高的配置就可以达到想要的结果。 第一次写东西,描述比较少,干货多吧,需要下点功夫理解,反正我是部署上。
9.附加
关于webrtc语音视频通话程序设计
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/131914.html原文链接:https://javaforall.cn