【发布时间】:2010-11-18 14:37:31
【问题描述】:
虽然 Google Chrome 的 messaging API 允许两个不同的扩展程序使用它们的“扩展程序 ID”进行通信,但我还没有看到 相同 扩展程序的两个实例之间的通信问题得到解决。这可以使用当前的 Google Chrome API 吗?是否有一个“实例 ID”来唯一标识我的扩展程序的每个实例?
如果没有,我想我会尝试使用我自己的服务器作为 -middle man- 并让我的扩展程序的所有实例使用我的 -middle man- 相互通信。在这种情况下,Chrome API 是否会为扩展公开 Instance ID?如果没有,关于提出我自己的实例 ID 方案的任何建议?
【问题讨论】:
-
一个陷阱是,当文档提到可选参数时,您会忽略该参数(不要在其位置传递 undefined)。例如, chrome.extensions.connect(extensionId, connectInfo) 只是 chrome.extensions.connect(connectInfo) 连接到您自己的扩展。如果您仍然需要帮助,则需要正确使用术语。 “实例”是什么意思?您正在运行哪些页面(背景、视图、内容)?
-
扩展实例只是多个副本。例如,如果您安装了 Adblock 扩展,而我也安装了 Adblock 扩展,那么这就是同一个 Adblock 扩展的 2 个实例。我的问题是我怎样才能让这两个 Adblock 实例相互通信,因为您的 Adblock 副本和我的 Adblock 副本具有相同的 ID gighmmpiobklfepjocnamgkkbiglidom 并且我使用该 ID 发送的任何消息都会到达我的 Adblock 实例,不是你的。
-
我正在尝试一种基于用户登录的方法来让实例相互通信。这意味着,使用上面的示例,您将使用您的凭据登录 Adblock,我也会这样做;然后,两个 Adblock 实例都将使用这些唯一的凭据进行通信。我将不得不使用我自己的服务器来管理 conns,这对于手头的任务来说相当麻烦,所以我非常欢迎一种更好、更优雅的方法来完成工作。至于我使用的元素,目前仅限于视图和内容脚本,但我必须在发货时使用选项页面等。
标签: google-chrome messaging p2p