Firefox不允许启动不可靠的WebRTC数据通道?

Firefox不允许启动不可靠的WebRTC数据通道?,firefox,webrtc,sctp,Firefox,Webrtc,Sctp,在本例中,我使用的是SimplePeer,尽管我已经用其他实现以及我自己的实现进行了测试。这似乎是创建数据通道的一个问题 simple peer的github页面中的示例已稍微修改并使用: var init=location.hash==='#1'; var config={reliable:true,maxRetransmits:0,ordered:false}; var p=new-SimplePeer({initiator:init,trickle:false,channelConfig:

在本例中,我使用的是SimplePeer,尽管我已经用其他实现以及我自己的实现进行了测试。这似乎是创建数据通道的一个问题

simple peer的github页面中的示例已稍微修改并使用:

var init=location.hash==='#1';
var config={reliable:true,maxRetransmits:0,ordered:false};
var p=new-SimplePeer({initiator:init,trickle:false,channelConfig:config})
控制台日志(p);
p、 on('error',function(err){console.log('error',err)})
p、 开启(“信号”,功能(数据){
console.log('SIGNAL',JSON.stringify(数据))
document.querySelector('#outgoing').textContent=JSON.stringify(数据)
})
document.querySelector('form')。addEventListener('submit',函数(ev){
ev.preventDefault()
p、 信号(JSON.parse(document.querySelector('#incoming').value))
})
p、 on('connect',function(){
console.log('CONNECT')
控制台日志(p);
控制台日志(p.\U通道);
if(init){
for(设i=0;i=100){
console.log(“全部获得”);
}
})
当使用Firefox(61.0.2 x64)启动连接时,连接被强制为可靠连接,即使尝试使用不可靠:false、ordered:false和maxRetransmits:0将其设置为不可靠连接。仅正确使用ordered属性。 检查连接对象时,不会显示maxRetransmits和maxRetransmitTime设置。如果使用Chrome连接到Firefox连接,则在Chrome中maxRetransmits和maxRetransmitTime都将设置为65535

如果您使用Chrome启动连接,并使用Firefox进行连接,则在Chrome和Firefox中,该连接都将以无序和不可靠的方式打开,并且在Chrome中有0个MaxRetransmit


这是一个bug,还是在使用Firefox浏览器启动连接时,我在设置连接以支持不可靠的数据通道时遗漏了什么?

是的,这是Firefox中一个非常不幸的bug,它导致
0
值被忽略
maxRetransmits
maxpacketlife
。它已经在Firefox 62中修复。如果您必须支持Firefox<62,您可以通过将
maxPacketLifeTime
设置为
1
来解决这个问题。但是您应该只在Firefox中使用较旧的Chrome版本。是的,这太乱了


请注意,中没有可靠的
成员。上也没有
maxRetransmitTime
属性。这两个属性早就被删除了。

是的,这是Firefox中一个非常不幸的错误,导致
maxRetransmits
maxPacketLife的
0
值被忽略时间
。它在Firefox 62中已经被修复。如果你必须支持Firefox<62,你可以通过将
maxPacketLifeTime
设置为
1
来解决这个问题。但是你应该只在Firefox中使用较旧的Chrome版本。是的,这很糟糕

请注意,中没有可靠的
成员。上也没有
maxRetransmitTime
属性。这两个属性早就被删除了

var init = location.hash === '#1';
var config = {reliable:true, maxRetransmits:0, ordered:false};

var p = new SimplePeer({ initiator: init, trickle: false, channelConfig: config })
console.log(p);
p.on('error', function (err) { console.log('error', err) })

p.on('signal', function (data) {
  console.log('SIGNAL', JSON.stringify(data))
  document.querySelector('#outgoing').textContent = JSON.stringify(data)
})

document.querySelector('form').addEventListener('submit', function (ev) {
  ev.preventDefault()
  p.signal(JSON.parse(document.querySelector('#incoming').value))
})

p.on('connect', function () {
  console.log('CONNECT')
  console.log(p);
  console.log(p._channel);
  if(init){
    for(let i=0;i<100;i++){
        p.send(JSON.stringify(i));
    }
  }
})

var rec = 0;
p.on('data', function (data) {
  rec++;
  console.log('data: ' + JSON.parse(data));
  if(!init){
     p.send(data);
  }
  if(rec >= 100){
    console.log("got all");
  }
})