В этом примере я использую simple-peer, хотя я тестировал и другие реализации, а также мою собственную. Это похоже на проблему с созданием каналов данных.
Пример со страницы github simple-peer был немного изменен и использован: https://github.com/feross/simple-peer
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");
}
})
При инициации соединения с использованием Firefox (61.0.2 x64) соединение становится надежным, даже при попытке установить его как ненадежное с использованием ненадежного: ложного, упорядоченного: ложного и maxRetransmits: 0. Только упорядоченное свойство используется правильно.
При проверке объекта подключения параметры maxRetransmits и maxRetransmitTime не отображаются. Если вы подключаетесь к Firefox через Chrome, для maxRetransmits и maxRetransmitTime в Chrome будет установлено значение 65535.
Если вы инициируете соединение с помощью Chrome и подключаетесь с помощью Firefox, соединение будет открыто как неупорядоченное и ненадежное как в Chrome, так и в Firefox, а также с 0 maxRetransmits в Chrome.
Это ошибка, или я что-то упустил при настройке соединения для поддержки ненадежных каналов данных при инициализации соединения с помощью браузера Firefox?