Как браузер должен взаимодействовать с локальным устройством? - PullRequest
1 голос
/ 27 апреля 2011

Как это должно быть реализовано?

  1. Пользователь имеет USB-устройство («дверной звонок»), подключенное к его машине.
  2. Пользователь заходит на веб-страницу клиента и щелкает ссылку.
  3. Появляется уведомление «Пожалуйста, нажмите на дверной звонок».
  4. Пользователь нажимает на дверной звонок, веб-сайт уведомляется.

«Дверной звонок» на самом деле является сложным устройством со своим собственным SDK, и он отправляет обратно большой блок данных. Производитель устройства предоставляет SDK для Windows и OSX. Я могу написать собственный код для любой платформы для взаимодействия с устройством на уровне ОС.

План A

  1. LocalWatchdog процесс запускается на компьютере пользователя.
  2. Плагин браузера перехватывает событие веб-страницы
  3. Плагин для браузера что-то (использует NPAPI?) Для подачи сигнала LocalWatchdog
  4. LocalWatchdog выдает уведомление и получает событие нажатия дверного звонка
  5. LocalWatchdog делает что-то , чтобы сообщить плагину, что дверной звонок был нажат.
  6. Плагин сообщает веб-сайту.

План B

  1. Веб-сайт загружает апплет Java, который запускается локально на компьютере пользователя.
  2. Апплет выдает уведомление.
  3. Апплет делает что-то , чтобы поймать событие нажатия дверного звонка.
  4. Апплет сообщает веб-сайту, что дверной звонок был нажат.

Другие планы приветствуются, но в любом случае, что это за что-то ?

  • Допустим любой язык.
  • Допустим нетривиальный процесс установки.
  • Должен работать на OSX и Windows. Если мне придется написать это дважды, я сделаю это.
  • Должен работать с Chrome, Firefox и IE. Если мне придется написать это три раза, я сделаю это.

Ответы [ 2 ]

3 голосов
/ 27 апреля 2011

Если у вас локальный процесс, я бы сказал:

  1. Запустите локальный веб-сервер, который взаимодействует с оборудованием и использует соответствующий междоменный XML-файл.
  2. Используйте вызов Ajax, чтобы попросить поговорить с ним из браузера и попросить нажать кнопку
  3. Когда локальный веб-сервер получает запрос, отправьте аппаратному обеспечению соответствующее сообщение (я полагаю, это что-то типа USB HID).
  4. Подайте сигнал пользователю в браузере, затем снова откройте длинный запрос на локальный веб-сервер и дождитесь ответа.
  5. Если пользователь нажимает кнопку, верните данные в запрос браузера.
  6. Прибыль (мы надеемся).
0 голосов
/ 27 апреля 2011

Должны ли они вообще быть связаны?

Пользователь в браузере нажимает на ссылку. Это ставит в очередь событие в серверной системе.

Независимо процесс LocalWatchdog на хосте периодически опрашивает серверную часть через REST API или подобное (каждую минуту?). Если есть ожидающая операция, она подтверждает это (и удаляет ее с сервера), а затем выскакивает диалоговое окно. «нажать кнопку дверного звонка».

Любое решение, при котором браузер и оборудование должны взаимодействовать в пределах компьютера пользователя, будет очень неприятным занятием, особенно с этим списком поддерживаемых браузеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...