Turn 服务
在常用的 Webrtc 教程中通常会为ICE 引入Stun 或者Turn 服务,一般可以用谷歌或者Cloudflare 提供的 stun 服务,也有用开源项目自行搭建的,这里主要是介绍Pion Turn 库的使用方法。
Credentials 长期凭证
| |
核心就是根据 鉴权secret 生成长期凭证
简单的STUN
| |
这里需要的公网IP 应该用于做中继的,通过RelayAddressGenerator 系列函数来实现一个动态负载均衡?
上述turn.NewServer 函数的参数中,可以添加鉴权hanlder
鉴权机制
| |
这个可以和内置的两种LongTermTURNRESTAuthHandler处理时间:用户名对应的验证 对应GenerateLongTermTURNRESTCredentials; NewLongTermAuthHandler 处理长期凭证的验证,对应GenerateLongTermCredentials
可以先过滤对应鉴权的用户是否存在,再进行下一步的验证
中间注释的RelayAddressGenerator 中继地址生成器的配置,可以用于控制中继端口的分配范围,配合防火墙来使用
传输层
Turn 支持udp、tcp、tls,配置起来也很简单,直接在turn.NewServer 函数中添加ListenerConfigs.Listener,例如使用TLS 的tcp 协议
| |
实现黑名单
| |
使用多线程
使用多线程,看着更像是多个监听线程,所以会有端口重用的需要
| |
总体来说Pione/turn 还是挺简单易用的;