Nano Hash - криптовалюты, майнинг, программирование

Firefox не позволяет инициировать ненадежные каналы данных WebRTC?

В этом примере я использую 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) соединение принудительно становится надежным, даже при попытке установить его как ненадежное, используя unreliable:false, order:false и maxRetransmits:0. Правильно используется только заказанное свойство. При проверке объекта подключения параметры maxRetransmits и maxRetransmitTime не отображаются. Если вы подключаетесь к соединению Firefox с помощью Chrome, для maxRetransmits и maxRetransmitTime в Chrome будет установлено значение 65535.

Если вы инициируете соединение с помощью Chrome и подключаетесь с помощью Firefox, соединение будет открыто как неупорядоченное и ненадежное как в Chrome, так и в Firefox, а также с 0 maxRetransmits в Chrome.

Является ли это ошибкой, или я что-то упускаю при настройке соединения для поддержки ненадежных каналов передачи данных при инициации соединения с помощью браузера Firefox?

31.08.2018

Ответы:


1

Да, это очень досадная ошибка в Firefox, отслеживаемая здесь, которая приводит к 0 значения игнорируются как для maxRetransmits, так и для maxPacketLifeTime. Это было исправлено в Firefox 62. Если вам необходимо поддерживать Firefox ‹ 62, вы можете обойти это, установив maxPacketLifeTime на 1. Но это следует делать только в Firefox, поскольку более старые версии Chrome не поддерживают maxPacketLifeTime . Да, это беспорядок.

Обратите внимание, что в RTCDataChannelInit словаре нет члена reliable. Также отсутствует атрибут maxRetransmitTime в интерфейсе RTCDataChannel. Оба давно удалены.

01.10.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..