Использование SSDP для отображения всех устройств в сети

Я довольно часто гуглил этот вопрос, но все еще немного смущен тем, возможно ли то, что я пытаюсь сделать, или нет.

По сути, я пытаюсь добавить раскрывающееся меню в свое веб-приложение, в котором перечислены все устройства, подключенные к сети. Когда я говорю устройства, я не имею в виду все устройства; Я говорю об определенных аппаратных устройствах, которые я использую, в которых реализован SSDP. Я уже создал программы Node.js, которые отправляют M-SEARCH и успешно находят все устройства, но я понимаю, что Node.js — это не браузерный javascript, и я никак не могу отобразить вывод вызова Node в терминале на Браузер (поправьте меня, если я ошибаюсь).

Проведя немного больше исследований, я понял, что альтернативой при выполнении чего-то подобного в браузере является либо создание какого-то расширения Chrome, способного выполнять SSDP и отправлять М-поиски, либо открывать веб-сокеты с помощью веб-сокета. API (не думаю, что это особенно полезно в моем случае для SSDP, но я могу ошибаться).

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

Я знаю, что недавно опубликовал что-то на StackOverflow по этому поводу, на что не было ответов или ответов, но я провел больше исследований по этой теме и почувствовал, что у меня есть лучшее понимание. При этом я все равно был бы признателен за некоторые указания относительно того, как подойти к этой проблеме, поскольку я не нашел ничего слишком полезного в Интернете.

Спасибо за ваше время!


person trynacode    schedule 06.09.2016    source источник


Ответы (2)


Насколько мне известно, расширения Chrome не могут получить доступ к API sockets.udp. Подходящим местом для этого в Chrome, вероятно, было бы приложение Chrome, поскольку они могут выполнять многоадресную рассылку UDP: https://codereview.chromium.org/12684008/ . Фактически, приложение SSDP уже существует. ..

К сожалению, приложения Chrome устарели в пользу обычные веб-приложения (по крайней мере, за пределами Chrome OS), и, как вы узнали, вы пока не можете использовать SSDP через обычные веб-API. API сокетов находится в стадии разработки, но неизвестно, смогут ли они решить проблемы безопасности, связанные с разрешением случайному веб-приложению делать такие вещи, как присоединение к локальной группе многоадресной рассылки.

Веб-сокеты вряд ли предоставят то, что вам нужно.

person Jussi Kukkonen    schedule 07.09.2016
comment
Спасибо за ответ! По сути, я не могу делать то, что пытаюсь сделать, по крайней мере, в Chrome? Это возможно, скажем, в другом браузере, таком как Mozilla Firefox? - person trynacode; 07.09.2016
comment
С хромовым приложением можно, просто очень скоро новые приложения в магазин больше не попадут, а через год-два весь магазин закроется (кроме Chrome OS). Сделать это как расширение в Mozilla возможно, но я предполагаю, что это будет сложно: это пока не то, на что способны браузеры. Если вы действительно хотите показать результаты SSDP в браузере, я думаю, вам следует создать и запустить веб-службу (сервер), которая предоставляет эту информацию вашему веб-приложению. Конечно, в этот момент вся цель веб-приложения сомнительна... - person Jussi Kukkonen; 08.09.2016
comment
Отлично, спасибо за информацию. Я уже общаюсь с REST API, поэтому, возможно, я могу попытаться добавить информацию SSDP в этот API. Спасибо. - person trynacode; 08.09.2016

Возможно.

Node.js не является javascript для браузера, и я никак не могу отобразить вывод вызова Node в терминале в браузере.

Они оба запускают Javascript. Запустите свои nodjs в терминале или направьте вывод в текстовый файл, если терминал недоступен. в обоих случаях console.log() должен иметь возможность распечатать.

Для SSDP на стороне клиента и сервера используйте это: https://www.npmjs.com/package/node-ssdp

Вам не нужно специально использовать приложение Chrome. Вы можете писать приложения в кроссплатформенных средах на основе Javascript, таких как Electron. Оно станет полнофункциональным «веб-приложением» для ПК, а для мобильных устройств вы сможете использовать Cordova и тому подобное.

person Kevin Roy    schedule 14.06.2017