FileCarpenter
Как работает передача файлов из браузера в браузер
Два браузера могут передавать байты файла во время живой сессии без предварительного сохранения всего файла как облачного объекта для скачивания. В WebRTC signaling, DataChannel и TURN выполняют разные задачи.
Signaling знакомит два браузера
До установки WebRTC-соединения браузеры должны обменяться описаниями соединения и сетевыми кандидатами через небольшой signaling-сервис. Он координирует встречу устройств и не обязан получать содержимое выбранного файла.
DataChannel переносит файл
После соединения отправитель читает файл частями и записывает их в упорядоченный WebRTC DataChannel. Браузер получателя собирает части или потоково записывает их в локальное хранилище в зависимости от доступных возможностей.
TURN — ретранслятор, а не облачное хранилище
Некоторые сети не позволяют построить прямой маршрут. Тогда TURN-сервер может ретранслировать зашифрованный трафик WebRTC во время активной сессии. Он пересылает пакеты, но не создаёт постоянную ссылку для скачивания.
Компромисс — оба устройства должны быть онлайн
До завершения передачи оба устройства и вкладки браузера должны оставаться открытыми. Если отправитель и получатель не могут быть онлайн одновременно, лучше подойдёт ссылка из облачного хранилища.