浏览器应该如何与本地设备交互?

时间:2011-04-27 01:26:45

标签: architecture cross-browser cross-platform

应如何实施?

  1. 用户的机器上连有USB设备(“门铃”)。
  2. 用户访问客户的网页并点击链接。
  3. 出现通知“请按门铃。”
  4. 用户按门铃,网站会收到通知。
  5. “门铃”实际上是一个拥有自己的SDK的复杂设备,它正在发回大量数据。设备制造商为Windows和OSX提供SDK。我可以为任一平台编写本机代码,以便在操作系统级别与设备进行交互。

    计划A

    1. LocalWatchdog进程在用户的计算机上运行。
    2. 浏览器插件捕获网页事件
    3. 浏览器插件执行 (使用NPAPI?)来发信号LocalWatchdog
    4. LocalWatchdog会弹出通知&获得门铃新闻事件
    5. LocalWatchdog执行了 来告诉插件已按下门铃。
    6. 该插件告诉网站。
    7. B计划

      1. 网站下载一个在用户机器上本地运行的Java小程序。
      2. 小程序弹出通知。
      3. applet执行某事来抓住门铃按下事件。
      4. 小程序告诉网站门铃已被按下。
      5. 欢迎其他计划,但无论如何,某事是什么?

        • 任何语言都可以接受。
        • 可以接受非平凡的安装过程。
        • 必须在OSX和Windows上运行。如果我必须写两次,我会。
        • 必须与Chrome,Firefox和IE一起运行。如果我必须写三次,我会。

2 个答案:

答案 0 :(得分:3)

如果您有本地流程,我会说:

  1. 运行与硬件通信并使用适当的跨域XML文件的本地Web服务器。
  2. 使用Ajax调用从浏览器询问并按下按钮
  3. 当本地网络服务器收到请求时,使用适当的消息点击硬件(我假设它有一些USB HID类型的东西)。
  4. 在浏览器中指示用户,然后再次向本地网络服务器打开长轮询请求并等待回复。
  5. 如果用户点击按钮,则将数据返回到浏览器请求。
  6. 利润(我们希望)。

答案 1 :(得分:0)

他们需要完全耦合吗?

浏览器上的用户点击链接。这会在后端系统上对事件进行排队。

独立地,主机上的LocalWatchdog进程定期通过REST API或类似的方式轮询后端(每分钟?)如果有挂起的操作,它会确认这一点(并从服务器中删除它)然后弹出对话框“按下门铃按钮”。

浏览器和硬件必须在用户机器的范围内进行交互的任何解决方案都将是一项非常令人沮丧的工作,尤其是要支持的浏览器列表。