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 还是挺简单易用的;