У меня есть USB-устройство с несколькими кнопками, которое обменивается данными с хостом (Windows и Mac) через собственный интерфейс управления HID. На хосте у меня есть собственное приложение, связывающееся с устройством (например, получение событий нажатия кнопок или настройка устройства).
Теперь я ищу правильный способ обработки событий кнопок или конфигурации устройства в Javascriptна веб-сайте, работающем в Chrome и, в идеале, в Firefox (и в других браузерах). Итак, мне нужно соединение между Javascript, работающим в браузере, и моим собственным приложением, работающим на клиентской машине.
Мой первый подход - использовать расширения Chrome через собственный обмен сообщениями. Я думаю, что это сделало бы работу, однако могли бы быть некоторые недостатки. Необходимо будет установить и поддерживать два компонента (расширение и собственный узел обмена сообщениями), и он будет ограничен Chrome и, возможно, Firefox (слегка измененный) и будущим Edge на основе Chromium. Кроме того, хотя я уверен, что расширение Chrome способно взаимодействовать с моим собственным приложением, я не уверен, как любая веб-страница может взаимодействовать с расширением, не затрагивая некоторые проблемы безопасности, о которых необходимо позаботиться.
Итак, я думал о соединении через WebSockets. Собственное клиентское приложение может запускать сервер WebSocket, а веб-страница может подключаться к локальному хосту. Например, я видел, как Enpass делал нечто подобное. Но что, если веб-страница https? Разве это не требует установки сертификата на localhost? Это вообще возможно? А как насчет проблем от LetsEncrypt?
Я знаю, что есть несколько вопросов о стекопереработке, нацеленных на эти проблемы, но я пока не нашел удовлетворительных ответов.