ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
14 ноября
1037632 Топик полностью
fk0, легенда (18.09.2020 14:05, просмотров: 458) ответил fk0 на Веб-нотификации: Я думаю это интересная тема, и её нужно вынести в отдельный топик. Я так же прошу кого-то кто разбирается в теме накидать толковых ссылок (lloyd?) Итак, как работают нотификации в браузере:
С нотификацией о включении умной лампочки понятно. А вот в обратную сторону, интересно, как? В общем случае очевидно, что поддержка HTTPS/SSL для каждой умной лампочки накладна даже на серверной стороне. Да даже сам факт длительной поддержки TCP-соединения накладен. Т.к. съедает номер порта. А если таких лампочек десятки тысяч? Такое не совместимо с теорией массового обслуживания. И ведь реакция на нажатие кнопки "Вкл." -- должна быть за ~200мс. Работа по опросу тоже 

не годится. Напрашивается протокол основанный на UDP, где регистрация/подписка есть (но по крайней мере не съедает ресурсов в ОС сервера), как и периодический пинг (для пробивания NAT'а). И промежуточный сервер способный воспринять команду от мобильного телефона (https) и быстро выдать на умную лампочку одним UDP-пакетом. Существуют ли уже готовые подобные решения сейчас?


Потом в идеале сервер не должен принадлежать какой-то конкретной фирме. Иначе будут работать только фирменные же лампочки. Или будет лицензия, абонентская плата и т.п. Но и бесплатным быть не может. Круг замкнулся. Разве что производитель каждой лампочки должен держать свой сервер -- но фирма закроется через полтора года, а лампочка могла бы ещё 5 лет служить... Такой сервер во-первых должен иметь открытый протокол, во-вторых задаваться в конфигурации лампочки пользователем. Чтоб сервис могли предоставлять разные организации.


Ещё аутентификация. Вводить номер паспорта, телефона и т.п. -- сомнительный вариант. По идее лампочка после конфигурации должна зарегистрироваться на сервере (это необходимо для получения нотификаций) и получить некоторую cookie, которая затем как-то должна попасть в браузер на телефоне, откуда с этой кукой можно уже посылать серверу команды для переправки лампочке.


Кроме того, чтоб получать нотификации от лампочки она должна получить из браузера необходимый пакет с информацией. Кроме того, для получения команд нужно обменяться криптографическими ключами (скорей простая симметричная криптография) между браузером и лампочкой. Наверное это может быть сделано в локальной сети, когда лампочка, её веб-сервер, напрямую доступен браузеру телефона. Он может туда передать информацию для получения нотификаций, передать или получить крипто-ключи, получить cookie полученный лампочкой на сервере. После этого можно получать нотификации за пределами ЛВС и посылать команды через интернет.


Этот же сервер может транслировать данные и в обратную сторону, от лампочки в браузер. Те же нотификации в браузер. Разумеется зашифрованные/подписанные блобы (чтоб не было возможности начать слать рекламу). Тогда с лампочки снимается необходимость поддержки сложных протоколов web-нотификации и SSL.


Существуют ли открытые протоколы для такого сейчас?

[ZX]