我有一个firefox扩展,它有一个用C++编写的XPCOM组件。与这个组件进行异步通信的最佳方式是什么,这样组件就可以在任何更改时“通知”主应用程序,而不仅仅是响应调用。主要目标是让UI根据XPCOM的信息进行更改,XPCOM与外部系统进行通信。根据要求,通信必须是异步的,因此不能每隔x秒检查一次XPCOM。
我想知道这样一个系统的架构应该是什么样子,以及我应该使用什么技术(Workers/streaming/...)。这个解决方案应该可以在firefox 3.5 - 4.0上运行。
如果能帮上忙我会很感激的。
发布于 2014-01-03 18:11:17
例如,如果您不想自己滚动内容,则可以使用observer服务。这将是一个经典的发布-订阅模式。您的组件将使用notifyObservers()来“发布”通知,然后前端代码可以在通过addObserver声明兴趣之后使用observe。
相反,您可以让您的组件公开您自己的一组接口和方法,以实现您自己的观察者模式,类似于nsIObserver所做的事情(甚至重用nsIObserver)。例如,nsIPrefBranch已经做到了这一点:它重用了nsIObserver,但不使用全局观察者服务器,而是自己跟踪观察者。
无论您使用什么,您都应该使用make sure that you dispatch notifications on the main thread,否则任何Javascript前端代码都会失效。
https://stackoverflow.com/questions/20898813
复制相似问题