首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有本机消息传递和非持久连接的Microsoft Edge扩展不起作用

具有本机消息传递和非持久连接的Microsoft Edge扩展不起作用
EN

Stack Overflow用户
提问于 2019-08-20 23:03:01
回答 2查看 523关注 0票数 0

我已经创建了一个带有本机消息传递的Microsoft Edge扩展,但我无法使其与非持久连接一起工作。

给定here的示例在我的特定情况下没有用处:

示例(随机数生成器)显示了当服务器已经运行时,两个UWP应用程序如何在客户端与服务器通信的位置进行通信。在Edge Extensions with Native Messaging (我的是基于数字签名和安全输入示例)中,我有一个W32应用程序,当消息通过扩展从页面到达时,服务器没有运行。

我已经检查了我能找到的所有here示例,但没有一个使用我需要的“非持久”连接:

我也尝试过在我的Edge扩展中使用runtime.sendNativeMessage,但这只适用于第一条消息。

我没有交互式html页面,用户可以通过该页面启动与runtime.connectNative的连接。这就是为什么它必须是一个“非持久”连接,使用runtime.sendNativeMessage从原生应用程序到start/query/get-response,方式类似于Chrome和Firefox使用的方式。

EN

回答 2

Stack Overflow用户

发布于 2019-08-22 15:49:32

Edge中没有用于持久化和非持久化连接的单独API。唯一的区别是:对于持久连接,我们将在成功建立连接后保持连接打开。我们可以关闭它,直到任务完成。请参考此sample

但是,对于非持久性连接,我们将在接收到响应并将其存储为AppServiceResponse时立即释放连接。This sample非常清楚,我们可以看到AppServiceConnection对象只存在于一个连接。

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2019-10-19 01:24:55

我现在已经解决了这个问题,并将我的Edge扩展从持久连接扩展转换为非持久连接扩展。

假设您从一个类似于here的扩展开始,将该扩展转换为非持久化扩展的核心思想如下:

最后一步,将与连接/断开连接相关的所有JavaScript代码从content.js中删除,并将启动win32应用程序的调用从OnBackgroundActivated()转移到OnAppServiceRequestReceived()

  • The中,这确保了我们只调用

代码语言:javascript
复制
Windows.ApplicationModel.FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync()

,当我们实际收到来自Edge的消息时。

  1. 然后使用来自边缘的消息的有效负载调用win32应用程序。win32应用程序在以下调用中通过AppServiceConnection将结果传回边缘:

代码语言:javascript
复制
        // Send message to the win32 application component and wait for response
        AppServiceResponse centennialResponse = await this.centennialConnection.SendMessageAsync(args.Request.Message);
        await args.Request.SendResponseAsync(centennialResponse.Message);

  1. 以上步骤导致调用以background.js中的browser.runtime.sendNativeMessage()开始,该调用由OnAppServiceRequestReceived()拾取。后者启动win32应用程序,并通过centennialConnection中的AppServiceConnection将消息传递给它。它等待结果并将响应发送回最后一步中的background.js.
  2. The调用。

在后台脚本和后台任务之间没有建立会话或持久连接。

由于上述变化,我们的扩展的可靠性有了很大的提高。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57576523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档