首页 > 其他分享 >webrtc终极版(二)搭建自己的iceserver服务,并用到RTCMultiConnection的demo中

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

时间:2024-02-04 16:44:58浏览次数:26  
标签:终极版 demo iceserver server turn ip 服务器 搭建

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配置为上面两个文件的地址。
替换证书地址

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/
iceserver测试页面

done表示成功

四、将配置放到第一篇文章的demo中

原来的配置都不用变,将自己的iceserver配置进去就可以了,如下图:

增加自己的服务器配置

五、总结

iceserver的确是不好配置,虽然网上的文档,包括chatgpt,都有相应的步骤,但是几乎没有完整的,我自己也走了很多弯路,至少花了两天时间,才彻底搞定,为了大家少走弯路,所以今天再好好总结下,相信大家按照我的步骤一定能够完成自己的iceserver搭建

最后还是提示下容易出问题的点,大家可以对号入座,作为重点排查对象:

1、ip设置的正确吗
2、用户名密码有没有用账号密码创建?我就是没有创建,直接想当然的的配置了,主要,要用脚本创建了用户名密码才可以
3、udp以及tcp端口放开了吗?我当时是udp再阿里云后台没有放开,所以一直不通,找了好久才发现这个隐蔽的问题
4、证书配置了吗?也是需要用脚本配置的哦

同时也欢迎您关注爱自律官方微信公众号,同时体验爱自律小程序的使用,让我们一起爱上自律,拥抱自由吧。

标签:终极版,demo,iceserver,server,turn,ip,服务器,搭建
From: https://www.cnblogs.com/wjcnet/p/18006491

相关文章

  • webrtc终极版(题外话)辛苦写文章分享,竟然遇到喷子狂喷,写篇文章回怼下,顺便发表下面对喷子
    webrtc终极版(题外话)辛苦写文章分享,竟然遇到喷子狂喷,写篇文章回怼下,顺便发表下面对喷子的处理方式第一篇文章发过后,出人意料的是,收到了博客园某一位用户的狂喷【注:本系列文章会同步发布到csdn、博客园、稀土掘金等平台上】,如下图示图片可能不清楚,我再把这位喷子的原话粘贴下来:......
  • 压缩算法_quicklz接口demo
    1quicklz  quicklz是单片机上一个常见的压缩算法,具体原理没有文档和hash表的相关基础我就不去深究了;  只需要将fileSrc.txt放在桌面,代码可以使用vscode的mingw直接编译;2quicklz源码quicklz.h/***quicklz.h*********************************************************......
  • webrtc终极版(一)5分钟搭建多人实时会议系统webrtc
    webrtc终极版(一),支持https,在线部署【不是本地demo】,采用RTCMultiConnection官方demo,5分钟即可搭建成功@目录webrtc终极版(一),支持https,在线部署【不是本地demo】,采用RTCMultiConnection官方demo,5分钟即可搭建成功前言一、webrtc是什么?二、搭建demo步骤1.代码内容2.运行效果总结前......
  • 通过Demo学WPF—数据绑定(二)
    准备今天学习的Demo是DataBinding中的Linq:创建一个空白解决方案,然后添加现有项目,选择Linq,解决方案如下所示:查看这个Demo的效果:开始学习这个Demoxaml部分查看MainWindow.xaml:<Windowx:Class="Linq.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006......
  • java flink(二十六) 实战之电商黑名单过滤 Flink CEP编程实现、什么是CEP、CEP组合模式d
    javaflink(二十六)实战之电商黑名单过滤FlinkCEP编程实现、什么是CEP、CEP组合模式demo、CEP循环模式demo什么是CEP:1、复杂事件处理2、Flink中实现复杂事件处理库3、CEP允许在无休止的事件中检测事件模式,让我们有机会掌握数据中的重要部分4、一个或多个由简单事件构成的事......
  • 通过Demo学WPF—数据绑定(一)✨
    前言✨想学习WPF,但是看视频教程觉得太耗时间,直接看文档又觉得似懂非懂,因此想通过看Demo代码+文档的方式进行学习。准备✨微软官方其实提供了WPF的一些Demo,地址为:microsoft/WPF-Samples:RepositoryforWPFrelatedsamples(github.com)将其克隆到本地,有很多的Demo代码:新建......
  • 大文件分片上传demo,前端基于Uppy,
    实现分片上传并且支持断点续传需要基于TusTus是一种开放协议,用于基于HTTP构建的可恢复上传。这意味着意外关闭选项卡或失去连接,让您继续,对于实例,您的10GB上传,而不是重新开始。后端后端变化挺大的,你需要将你的服务器变得支持Tus,刚好官方提供了对应的插件(Java后台、php后......
  • 关系网demo
    树状图显示层级关系,使用d3js竖形<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>......
  • 虹软sdk实现人脸识别小demo
    虹软官网:https://ai.arcsoft.com.cn注册后,下载适配的sdk注意提取下载的sdk中的jar包,代码中需要用到<dependency><groupId>com.arcsoft.face</groupId><artifactId>arcsoft-sdk-face</artifactId><version>3.0.0.0</version><scope&......
  • 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认
    今天运行项目的时候出现了这个错误....查了一下解决的方法。具体方案如下: 1、先确认安装IIS的时候有没有装Asp.Net,如果没安装的话,安装上即可。(XTHS:采用这步,就可以了!) 2、IIS采用了更安全的web.config管理机制,默认情况下会锁住配置项不允许更改。用超级管理员的身份执......