如何实现浏览器和后端之间的通信?

时间:2010-11-05 21:49:17

标签: browser communication backend npapi gecko

我有一个需要能够与基于gecko的Web浏览器通信的后端软件(反之亦然)。实现这一目标的最佳方法是什么?由于HTTP是单向的(除了例如反向AJAX,我认为它非常“hacky”),我想知道如何做到这一点。

是否可以选择创建基于NPAPI的插件?基于浏览器和后端之间交换的数据,浏览器需要操纵网页的DOM。操作需要非常动态,通信速度是一个重要的要求。

我很高兴能帮助我指出正确的方向或提供可能值得阅读的有用资源!

1 个答案:

答案 0 :(得分:1)

编写浏览器插件并不是一件容易的事,如果你可以使用像WebSockets这样的替代品(或者像web-socket-js那样的模拟,请参阅herehere了解更多详情。

如果您考虑编写浏览器插件,只有当这些替代方案由于特殊要求而无法给您足够的控制权时 有了它,您将获得本机代码的全部好处(对您选择的任何API的高度控制)以及随之而来的问题:

  • 你必须开始担心特权
  • 错误会导致整个浏览器崩溃
  • 您可能必须处理平台和浏览器之间的行为差​​异
  • 您必须担心多个平台上的分发
  • ...

如果出于某种原因需要更高级别的控制,你可以

  • 在插件中实现您选择的连接处理
  • 让JavaScript启动连接并发送数据
  • 让JavaScript注册传入数据的处理程序等。
  • 对传入的数据调用这些处理程序并将数据传递给他们

要开始使用NPAPI插件see here,要支持IE,您还必须编写content extension。最后我建议你看看FireBreath已经为你做了很多繁重工作(为IE和NPAPI隐藏了不同的API,为你提供了更高级别的API,修复了包含的浏览器错误,...... )。