卖不甜枣 发表于 2024-7-16 15:07:53

webrtc终极版(二)搭建本身的iceserver服务,并用到RTCMultiConnection的d

webrtc终极版(二)搭建本身的iceserver服务,并用到RTCMultiConnection的demo中



前言

第一篇文章,写了怎样再5分钟之内搭建一个webrtc服务,并运行起来,这固然不够,turn-server以及stun-server都把握在别人手中,实际上,连socket服务,也在别人手中,正常情况下,RTCMultiConnection官方不会停止服务的,但是咱们也不敢保证不是,所以本篇文章,我们就用最具体的方式,来手把手教会大家在centos上搭建本身的stun-server以及turn-server。
看到这里,大概有人要懵了,怎么一会儿是iceserver,一会儿是stunserver,一会儿又是turnserver,下面我们先讲解下三者的定义以及作用,然后再直接进行实操,实际上,你可以如许理stunserver+turnserver构成iceserver。
整个webrtc系列,其实搭建iceserver是最为贫苦的,为什么这么说呢,其实怎样搭建,网上一搜一大把,你根据文章去实操,也没有问题,但是实际应用起来,就是不能用,我就是如许的,找了很多问题都找不到,折腾了两天才算搞定,这篇文章除了提醒大家再搭建iceserver的最重要的留意事项外,还有个目的是为了防止我本身时间长了也别忘了,下面我们就开始步入正题
一、stunserver,turnserver,iceserver是什么?

   ICE:(Interactive Connectivity Establishment)是一种框架和协议,用于在网络中创建可靠的及时通信毗连。ICE并不是单独的服务器,而是一种方法,它可以利用STUN(Session Traversal Utilities for NAT)和TURN(Traversal Using Relays around NAT)服务器来实现其目标。实际上ice是一个综合解决方案,它整合了STUN和TURN的功能。ICE通过在不同网络条件下选择最佳的毗连路径,以确保最可靠和高效的通信。
    STUN服务器: 用于解决NAT(网络地址转换)引起的毗连问题。STUN协议允许客户端发现其在NAT后的公共地址和端口,从而直接通信成为大概。
    TURN服务器: 用于在两个端点无法直接通信时提供中继服务。TURN服务器充当一个中继,将数据传输给两个端点,以解决NAT等问题。
其实很好理解,比方说我们两台电脑必要进行p2p通信,假如两台电脑再同一局域网,那直接就通信了,没有问题。
但是假如两台电脑再不同局域网,那么该怎么通信呢?我怎么能访问到别的一台电脑呢?它又不是服务器,我也不知道它的公网ip!
那么没有问题,STUN服务器来帮助,他做的事变就是这个,它作用就是找到两台电脑【固然也可以是手机】的公网ip,然后两台电脑就可以通过公网ip地址,相互访问了。
问题又来了,它假如找不到公网ip怎么办? 这就是TURN服务器要干的事变了,没办法,那就只能让TURN服务器中转一下,留意,假如走到这一步,是要消耗服务器流量的。
二、具体搭建步骤

搭建stun-server和搭建turn-server,上来我们认为要搭建两个,实际上,可以用coturn解决问题, Coturn不但仅是一个TURN服务器,还包罗了STUN的功能,允许客户端发现其在NAT后的公共IP地址和端口,简而言之,只必要搭建一个就可以。
1.下载安装coturn

   脚本如下:
①更新体系: yum update
②安装Coturn: yum install coturn
③启动Coturn服务: systemctl start coturn
④确保Coturn开机启动: sudo systemctl enable coturn
⑤假如有防火墙,确保打开相应的端口:
firewall-cmd --zone=public --add-port=3478/udp --permanent
firewall-cmd --reload
留意:假如用的是云服务器,还要到背景去开启tcp以及udp的3478端口,如阿里云的是在安全组那里设置【这个很重要,我就是由于没有放开udp的3478端口,导致白白延长了很长时间】
以上所有脚本,假如有选择的,就输入y,然后enter,没有选择的,直接enter
2、处理证书问题

coturn安装成功后,打开配置文件,我的是默认安装到了/etc/coturn下,配置打开如下【无用部分已排除】:
#listening-device=eth0
#listening-port=3478
#tls-listening-port=5349
#alt-listening-port=0
#alt-tls-listening-port=0
#listening-ip=172.17.19.101
#listening-ip=10.207.21.238
#listening-ip=2607:f0d0:1002:51::4
#relay-device=eth1
#relay-ip=172.17.19.105
#relay-ip=2607:f0d0:1002:51::5
#external-ip=60.70.80.91
#external-ip=60.70.80.91/172.17.19.101
#external-ip=60.70.80.92/172.17.19.102
#relay-threads=0
# Lower and upper bounds of the UDP relay endpoints:
# (default values are 49152 and 65535)
#min-port=49152
#max-port=65535
#user=username1:password1
#cert=/etc/pki/coturn/public/turn_server_cert.pem
#pkey=/etc/pki/coturn/private/turn_server_pkey.pem
#realm=mycompany.org

安装coturn后,cert和pkey是注释状态,但是实际上,这个是不能注释的,否则运行时,会报错,报证书找不到。
   ①安装依靠: yum install -y make gcc gcc-c++ wget openssl-devel libevent libevent-devel openssl git
②生成证书:openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
以上脚本,都按enter进行下一步
上面两个脚本执行后,/etc文件夹下,会有两个文件,turn_server_cert.pem以及turn_server_pkey.pem,将cert以及pkey配置为上面两个文件的地址。
https://img-blog.csdnimg.cn/direct/62d510eb4aae42469dd6cd672f5803a0.png
3、处理各个ip以及端口的配置

listening-ip配置为0.0.0.0即可,如许会监听所有的ip请求
relay-ip配置为服务器的外网ip地址
external-ip 配置为服务器的外网ip地址
listening-port=3478 保持原有配置即可
4、配置用户名密码以及域标识

创建用户名密码以及域标识的格式如下:
turnadmin -a -u [用户名] -p [密码] -r [域标识]
我这里执行:
turnadmin -a -u wjc -p 123456 -r turn.zilv.cn
相当于创建了一个wjc的用户名,密码为:123456,域标识为turn.zilv.cn
以上创建好后,再次更新turnserver.conf文件如下:
user=wjc:123456
realm=turn.zilv.cn
三、测试

可以采用谷歌提供的在线测试工具进行:
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
https://img-blog.csdnimg.cn/direct/d8b648e21b75448eafa85f9a8bd48f91.png
https://img-blog.csdnimg.cn/direct/62772a809c9c4b499c412fd82d0894e5.png
四、将配置放到第一篇文章的demo中

原来的配置都不用变,将本身的iceserver配置进去就可以了,如下图:
https://img-blog.csdnimg.cn/direct/e20487b6770c44a8b50cc4799da1a21d.png
五、总结

iceserver的确是不好配置,虽然网上的文档,包罗chatgpt,都有相应的步骤,但是几乎没有完整的,我本身也走了很多弯路,至少花了两天时间,才彻底搞定,为了大家少走弯路,所以本日再好好总结下,相信大家按照我的步骤一定可以或许完本钱身的iceserver搭建
最后照旧提示下轻易出问题的点,大家可以对号入座,作为重点排查对象:
   1、ip设置的精确吗
2、用户名密码有没有用账号密码创建?我就是没有创建,直接想固然的的配置了,重要,要用脚本创建了用户名密码才可以
3、udp以及tcp端口放开了吗?我当时是udp再阿里云背景没有放开,所以一直不通,找了好久才发现这个隐蔽的问题
4、证书配置了吗?也是必要用脚本配置的哦
同时也欢迎您关注爱自律官方微信公众号,同时体验爱自律小程序的使用,让我们一起爱上自律,拥抱自由吧。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: webrtc终极版(二)搭建本身的iceserver服务,并用到RTCMultiConnection的d