Google chrome extension Chrome扩展:简单的消息传递与Chrome连接
我应该在什么时候使用镀铬连接?是否有充分的理由同时使用简单的消息传递和长寿命的连接?这两者是否有单独的性能影响 除了比较这两种方法之外,还有其他文件吗Google chrome extension Chrome扩展:简单的消息传递与Chrome连接,google-chrome-extension,Google Chrome Extension,我应该在什么时候使用镀铬连接?是否有充分的理由同时使用简单的消息传递和长寿命的连接?这两者是否有单独的性能影响 除了比较这两种方法之外,还有其他文件吗 (编辑:文档移动到)在我编写扩展的个人经验中,我倾向于使用sendMessage进行状态初始化,并在我想要重复发送内容的任何时候进行连接 例如,我的扩展通常有用户可配置的选项,我需要一种方法将这些选项发送到我的内容脚本。我使用sendMessage和onMessage将JSON对象传递给我的内容脚本。此对象包含各种用户控制的设置,可能还包含其他状
(编辑:文档移动到)在我编写扩展的个人经验中,我倾向于使用
sendMessage
进行状态初始化,并在我想要重复发送内容的任何时候进行连接
例如,我的扩展通常有用户可配置的选项,我需要一种方法将这些选项发送到我的内容脚本。我使用sendMessage
和onMessage
将JSON对象传递给我的内容脚本。此对象包含各种用户控制的设置,可能还包含其他状态
我还创建了一个小库,允许在后台页面中定义键盘快捷键。它的工作原理很简单:将内容脚本注入到每个页面中,然后侦听keydown
和keydup
事件
当事件发生时,它使用chrome.runtime.connect
与后台页面通信。我认为这是一个很好的例子,说明了长时间的连接比许多sendMessage
调用更有用
我不认为有任何东西需要你以这样或那样的方式使用它们。。。您可以使用多个sendMessage
,也可以使用connect只发送一条消息。我相信这更多的是语义和选择哪个工具对工作最有意义的问题
还请记住,使用connect可以很容易地为每个连接存储单独的状态,而使用sendMessage
可能要困难一些
至于表现。。。我真的不知道,但我希望它们至少是相似的,即发送5条
sendMessage
大致相当于使用connect发送5条消息。请记住,它们是异步的,因此计时可能会根据情况而波动。要补充另一个答案,使用端口还有一个额外的优势,即断开连接事件
假设一个内容脚本打开了到后台页面的连接。如果选项卡关闭或用户导航离开,后台页面将立即收到卸载内容脚本的通知
这还允许跟踪打开的选项卡(插入内容脚本),而无需使用
选项卡
权限。对于任何未来的观众,我相信发送消息
使用chrome.runtime.connection
,打开一个端口,然后在发送单个消息后关闭端口,因此在性能方面,它们应该是相同的。尝试console.log(sendResponse)
。