webrtc TCP转发

一、 背景

配置webrtc relay udp经常会被被丢包。所以希望改成tcp看来转发

二、 如何转发

peerconnection iceTransportPlicy 为 relay实现转发, 默认为all,是会优先P2P,不成功则走转发。默认是UDP

this.pc = new RTCPeerConnection({
      iceServers: [
      {'urls':'stun:xx.xx.xx.xx:3478'},
      {
        'urls':'turn:xx.xx.xx.xx:3478',
        'username':'xxx',
        'credential':'xxxx'
      }
      ],
      iceTransportPolicy: 'relay'
    });

这里配置的iceServers是给当前端用的。 配置relay时,对端候选地址是没有当前ip,只会把iceserver发给对端是不知道当前的真时ip
此时只会有一条candidate数据, 不会把当前本地ip,外网ip等发出去

candidate:3566907199 1 udp 16785407 220.231.216.119 40269 typ relay raddr 0.0.0.0 rport 0 generation 0 ufrag nOr3 network-cost 999
UDP
UDP
local
ICE
remote

二、 配置TCP转发

tcp转发只要在turn加上transport=tcp参数即可

this.pc = new RTCPeerConnection({
      iceServers: [
      {'urls':'stun:xx.xx.xx.xx:3478'},
      {
        'urls':'turn:xx.xx.xx.xx:3478?transport=tcp',
        'username':'xxx','credential':'xxxx'}
      ],
      iceTransportPolicy: 'relay'
    });
TCP
UDP
local
ICE
remote

三、其他

  1. 如果两端都设置了relay 会通信不成功,具体原因未知
  2. 两端设置不同的ICESERVER进行relay则可以成功
UDP
UDP
local
ICE1
ICE2
remote
  1. 有试过把ICEServer的udp禁了来模拟udp不通的场景,发现无法建立连接
    抓包看会通过stun 的udp包来获取外网IP. 因为upd不通所以后续通讯没建立起来。具体原因未知
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值