Создание приложения node.js PEER с WebRTC
Итак, у меня есть веб-приложение, которое генерирует большие буферы цветовой информации, которую я хочу отправить в приложение узла, работающее на другом компьютере в моей локальной сети. Веб-сокеты, кажется, не достаточно быстры для меня. Я хотел использовать UDP, и кажется, что WebRTC - единственный способ сделать это из браузера. Похоже, предостережение в том, что WebRTC - это только PEER-PEER (браузер к браузеру). Я подумал, что мог бы использовать узел webkit, чтобы подражать, будучи моим другим "PEER". В моем приложении узла я мог обработать "сигнализацию" и настроить ее в RTCPeerConnection к моему веб-приложению. Поэтому я мог отправить свои данные из моего веб-приложения в мое приложение узла (локальная сеть). Для некоторого контекста у меня есть один компьютер с собственным программным обеспечением для управления осветительными приборами, и я хочу использовать веб-приложение для управления освещением.
Чтобы свести вопрос, как я могу сделать RTCPeerConnection из браузера в приложение webkit узла?
Любая помощь будет принята с благодарностью.
Спасибо!
-Джейк
1 ответ
Node-RTCPeerConnection - это попытка (текущий WIP) создать совместимую со спецификацией реализацию RTCPeerConnection для Node.js полностью на JavaScript без собственного кода C или C++. Это позволяет одноранговым узлам браузера общаться с одноранговыми узлами (Node.js).
Но вы не можете использовать его для производства еще.
Затем у нас также есть wrtc (node-webrtc), который предоставляет собственный модуль для NodeJS, который поддерживает подмножество совместимых со стандартами функций WebRTC. В частности, API PeerConnection и DataChannel.
Слишком много людей имеют проблемы с wrtc
, Так как он должен скачать много исходного кода и собрать его только для того, чтобы выяснить, что он через некоторое время дает сбой на определенных платформах. К сожалению, он не поставляется с предварительно собранными пакетами, описанными в этом выпуске.
Вы можете использовать либо google-реализацию webrtc, либо более позднюю (от Ericsson) реализацию под названием openWebrtc. Разработчики openWebRTC очень гордятся тем, что запускают свою реализацию на различных устройствах, таких как устройства raspberry pi и iOS.
Тот, который работал лучше всего для меня, был электрон-webrtc (который в свою очередь использует предварительно встроенный электрон) для лучшей совместимости. Он создает скрытый процесс Electron (который основан на Chromium, поэтому поддержка WebRTC великолепна!) И связывается с этим процессом для включения WebRTC в Node.js. Это добавляет много накладных расходов.
Он предназначен для использования с RTCDataChannels, поэтому API MediaStream не поддерживается.
Другие источники:
https://github.com/webrtcftw/goals/issues/1
Обновление 2019
На данный момент лучший и простой способ решить эту проблему - использовать модуль webrtc. Проверьте образцы для вдохновения. Этот модуль делает то, что вы искали, реализован с помощью N-API и использует модуль Canvas для создания нового видео из клиентского потока. Надеюсь, это поможет тем, кто столкнется с этой проблемой в будущем.