WebRTC搭建与应用(五)-Coturn踩坑记
近期由于项目需要在研究前端WebGL渲染转为云渲染,借此机会对WebRTC等有了初步了解,在此记录一下,以防遗忘。
第五章 WebRTC搭建与应用(五)-Coturn踩坑记
文章目录
- WebRTC搭建与应用(五)-Coturn踩坑记
- 前言
- # 一、Coturn使用
-
- 1.1 问题
- 1.2 问题排查与解决
- 二、使用Docker部署Coturn
-
- 2.1 安装Docker
- 2.2 安装Coturn镜像
- 2.3 配置Docker中的Coturn
- 总结
前言
本来应该继续写PeerJS-Server使用的相关内容,但是在跨电脑测试WebRTC的过程中发现ICE服务一直有些问题,所以在此记录一下踩坑过程,希望对大家有所帮助。
# 一、Coturn使用
1.1 问题
之前按照https://blog.csdn.net/meteor1028/article/details/144290591讲解内容在Ubuntu搭建了Coturn包管理器服务形式,测试TURN服务是否连通是发现在火狐浏览器可以正确连接。
但是在谷歌浏览器却会出现卡死无法完成并返回relay信息的问题
1.2 问题排查与解决
开始在网上查找问题原因时,发现有些博主说通过Chrome浏览器自身有问题,无法通过Turn服务功能测试,我在服务器输出Coturn服务日志时谷歌浏览器连接有如下报错内容,我发现user中并没有出现我设置的用户名,所以会有401未授权的报错。
但是同样的服务通过火狐浏览器测试时,user中就是有用户名的,开始我也怀疑是谷歌浏览器自身的原因,但是因为轻量化渲染我们主要使用谷歌浏览器,所以还是想尝试查找一下问题原因,我就开始研究Coturn服务的相关参数。
经过排查发现在启动Coturn服务时,如果不调用-r命令参数即realm设置,谷歌浏览器就无法正确穿透返回。
所以启动Coturn服务时一定切记要加上-r设置才可以。
turnserver -r ip:3478 -c /usr/local/coturn/etc/turnserver.conf
加上-r设置后重启服务在谷歌浏览器测试发现可以完成同时有了relay信息的返回。
二、使用Docker部署Coturn
2.1 安装Docker
sudo apt-get update
sudo apt-get install docker.io
检查docker是否安装成功
docker -v
2.2 安装Coturn镜像
首先设置docker的国内镜像源,否则通过docker官网地址拉取Coturn镜像会报错超时。
sudo vim /etc/docker/daemon.json 初次安装docker没有daemon.json文件,需要创建,然后将下面的内容复制到文件中并保存。
{
“registry-mirrors”: [
“https://docker.registry.cyou”,
“https://docker-cf.registry.cyou”,
“https://dockercf.jsdelivr.fyi”,
“https://docker.jsdelivr.fyi”,
“https://dockertest.jsdelivr.fyi”,
“https://mirror.aliyuncs.com”,
“https://dockerproxy.com”,
“https://mirror.baidubce.com”,
“https://docker.m.daocloud.io”,
“https://docker.nju.edu.cn”,
“https://docker.mirrors.sjtug.sjtu.edu.cn”,
“https://docker.mirrors.ustc.edu.cn”,
“https://mirror.iscas.ac.cn”,
“https://docker.rainbond.cc”]
}
接着通过sudo service docker restart重启docker
然后通过sudo docker info查看镜像是否设置成功
国内镜像设置成功后,就可以拉取Coturn的镜像了,Coturn更新频率比较稳定,喜欢最新功能的可以拉取latest最新版本,我目前使用的是Coturn 4.6.2-r12,所以拉取命令如下:
sudo docker pull coturn/coturn:4.6.2-r12
拉取成功后,通过sudo docker images查看现有镜像信息。
2.3 配置Docker中的Coturn
参考第一章内容创建一个turnserver.conf文件,将coturn需要的配置信息写好,我没有创建dockerfile,所以直接通过命令创建容器运行Coturn即可,命令如下:
sudo docker run -d --name coturn --network=host -v /home/ubuntu/coturn-config/turnserver.conf:/etc/coturn/turnserver.conf coturn/coturn:4.6.2-r12 turnserver -r ip:3478
切记命令行中要加上-r设置,否则谷歌浏览器无法正常使用turn服务。
运行后通过sudo docker ps可以查看运行状态。
通过docker正确运行coturn以后,在网页上就可以测试ICE服务是否连通了。
总结
至此总结了一下部署、使用Coturn过程中遇到的问题以及相关流程,希望对感兴趣的小伙伴有帮助,如果有问题欢迎大佬们批评指正,下一章我们言归正传,测试PeerJS-Server服务的使用以及跨电脑同网络下PeerJS对ICE的配置使用。