Google chrome extension extension.onConnect、extension.connect和Port的行为

Google chrome extension extension.onConnect、extension.connect和Port的行为,google-chrome-extension,Google Chrome Extension,我很好奇如果有多个侦听器,onConnect、connect和port.postMessage/onMessage应该如何工作。文档中不清楚发生了什么,以及断开连接的原因 假设我有三个上下文(背景页面、内容脚本和浏览器操作弹出窗口)-每个启动时都注册了一个onConnect侦听器。后台页面希望向他们两人发送消息-我可以简单地连接(),然后通过端口发送消息吗?如果我需要收据确认怎么办?在接收onConnect的两个上下文中,我可以说-port.postMessage({received:true}

我很好奇如果有多个侦听器,onConnect、connect和port.postMessage/onMessage应该如何工作。文档中不清楚发生了什么,以及断开连接的原因

假设我有三个上下文(背景页面、内容脚本和浏览器操作弹出窗口)-每个启动时都注册了一个onConnect侦听器。后台页面希望向他们两人发送消息-我可以简单地连接(),然后通过端口发送消息吗?如果我需要收据确认怎么办?在接收onConnect的两个上下文中,我可以说-port.postMessage({received:true})吗?我会在连接()的家伙身上收到两条消息吗?我是否会在调用connect()的后台页面中收到onConnect()消息

我已经读过,而且-他们非常清楚sendRequest和onRequest是如何工作的,但是我需要交付确认,我认为我不能充分地从sendRequest中获得


我的问题归结为:端口对象可以有多少个“端点”,以及它如何处理来自任何端点的“断开连接”调用?

端口实际上非常简单。我认为一个例子会更好,请注意,我没有使用内容脚本,但这里有一个我构建的实用程序脚本,名为socket.js,它允许在弹出页面和背景页面之间进行连续的双向通信

我目前正在该扩展中使用它:


PostTaskAPI对于用户体验来说很好。我知道我没有直接回答你的问题,但我希望这对你有所帮助

端口实际上非常简单。我认为一个例子会更好,请注意,我没有使用内容脚本,但这里有一个我构建的实用程序脚本,名为socket.js,它允许在弹出页面和背景页面之间进行连续的双向通信

我目前正在该扩展中使用它:


PostTaskAPI对于用户体验来说很好。我知道我没有直接回答你的问题,但我希望这对你有所帮助

我喜欢示例,但我不了解端口是否总是只有两个端,或者它们是否可以在应用程序的许多不同部分之间进行通信。API描述了一种创建“侦听器”的方法,知道Google通常的做法,我认为它可以有多个端(以港口名称区分)。解决这个问题的最佳方法是测试它。我的GitHub Repo提供了一个示例…只需添加缺少的内容。我喜欢示例-但我不了解端口是否总是只有两端,或者它们是否可以在应用程序的许多不同部分之间进行通信。API描述了创建端口的方法“监听器”,了解谷歌通常的做事方式,我会假设它可以有多个端点(以port.name区分)。解决这一问题的最佳方法是测试它。我的GitHub Repo提供了一个示例…只需添加缺少的内容。