Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
browser.runtime.sendMessage API在Firefox扩展上缓慢发送大数据_Firefox_Firefox Addon_Firefox Addon Webextensions - Fatal编程技术网

browser.runtime.sendMessage API在Firefox扩展上缓慢发送大数据

browser.runtime.sendMessage API在Firefox扩展上缓慢发送大数据,firefox,firefox-addon,firefox-addon-webextensions,Firefox,Firefox Addon,Firefox Addon Webextensions,我使用firefox扩展(firefox 54-64位)的browser.runtime.sendMessage API将contentscript中的大量二进制数据发送到后台 发送消息的速度非常慢,并根据contentscript发送的数据大小,使firefox在3-5秒内不响应。然后正常工作,后台接收消息 chrome sendMessage API上的运行迅速且非常平稳。 我如何在firefox中修复它 browser.runtime.sendMessage(tab.id, { name:

我使用firefox扩展(firefox 54-64位)的browser.runtime.sendMessage API将contentscript中的大量二进制数据发送到后台

发送消息的速度非常慢,并根据contentscript发送的数据大小,使firefox在3-5秒内不响应。然后正常工作,后台接收消息

chrome sendMessage API上的运行迅速且非常平稳。

我如何在firefox中修复它

browser.runtime.sendMessage(tab.id, { name: "sendScreen", data: { screen: screen} })
对象中的屏幕值是二进制数据(长度为~1135609的数组)

在background.js中,我添加了侦听器消息:

browser.runtime.onMessage.addListener (message, sender, sendResponse);
清单文件:

{
  "name": "abc",

  "background": {
    "page": "background.html"
  },
  "browser_action": {
    "default_icon": "icons/icon_19.png",
    "default_popup": "login.html",
  },
  "content_scripts": [
    {
      "web_accessible_resources": [


        "js/contentscripts/Browser.js",

      ],
      "js": [
        "js/contentscripts/ContentScript.js"
      ],
      "matches": [
        "file://*/*",
        "http://*/*",
        "https://*/*"
      ],
      "run_at": "document_end",
      "all_frames": true
    },
    {
      "js": [

        "js/contentscripts/Browser.js",
      ],
      "matches": [
        "file://*/*",
        "http://*/*",
        "https://*/*"
      ],
      "run_at": "document_start",
      "all_frames": true
    }
  ],
  "icons": {
    "16": "icons/icon_16.png",
    "19": "icons/icon_19.png"
  },
  "incognito": "spanning",
  "permissions": [
    "activeTab",
    "tabs",
    "http://*/*",
    "https://*/*",
    "<all_urls>"
  ],
  "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
}
{
“名称”:“abc”,
“背景”:{
“页面”:“background.html”
},
“浏览器操作”:{
“默认图标”:“icons/icon_19.png”,
“默认弹出窗口”:“login.html”,
},
“内容脚本”:[
{
“网络可访问资源”:[
“js/contentscripts/Browser.js”,
],
“js”:[
“js/contentscripts/ContentScript.js”
],
“匹配项”:[
“文件://*/*”,
“http://*/*”,
“https://*/*”
],
“运行时间”:“文件结束时间”,
“所有帧”:正确
},
{
“js”:[
“js/contentscripts/Browser.js”,
],
“匹配项”:[
“文件://*/*”,
“http://*/*”,
“https://*/*”
],
“运行时间”:“文档开始时间”,
“所有帧”:正确
}
],
“图标”:{
“16”:“icons/icon_16.png”,
“19”:“icons/icon_19.png”
},
“隐姓埋名”:“跨越”,
“权限”:[
“活动标签”,
“标签”,
“http://*/*”,
“https://*/*”,
""
],
“内容安全策略”:“脚本src'self”“不安全评估”;对象src'self”
}
如果上述问题没有解决,那么

否则,您可以尝试按照评论中提到的那样分割数据,这不会减少总体时间,但可能会减少对用户体验的影响,或者只是在他们修复webextensions错误之前不支持Firefox。

如果所提到的问题没有解决


否则,你可以像评论中提到的那样尝试分割数据,这不会减少总体时间,但可能会减少对用户体验的影响,或者只是在他们修复webextensions错误之前不支持Firefox。

最近在这一领域修复了一个相当重要的错误:尽管修复仅在Firefox 55中,您是否可以尝试Beta版、Dev版或夜间版本,看看是否有明显差异?将数据分成多个部分,分别发送,发送之间有
setTimeout()
延迟。即使
setTimeout()
中的延迟为0毫秒,它仍然允许FF在不同消息之间执行其他操作。虽然这不一定会加快整个进程,但应该可以防止FF冻结。您是在多进程模式下运行,还是在单进程模式下运行?请提供可用于复制问题的完整版本。让MCVE只发送虚拟数据可能比包含构建实际数据所需的一切都要容易。如果这个问题在FF55中没有解决,我们将需要足够的时间来解决。您可以尝试使用广播频道api:它在firefox 55 beta:)上运行良好,如何在FF54中临时修复?当FF55释放时?。谢谢。最近在这方面修复了一个相当重要的错误:修复只在Firefox 55中,你能试试Beta版、Dev版或夜间版本,看看是否有明显的区别吗?将数据分成多个部分,分别发送,发送之间有
setTimeout()
延迟。即使
setTimeout()
中的延迟为0毫秒,它仍然允许FF在不同消息之间执行其他操作。虽然这不一定会加快整个进程,但应该可以防止FF冻结。您是在多进程模式下运行,还是在单进程模式下运行?请提供可用于复制问题的完整版本。让MCVE只发送虚拟数据可能比包含构建实际数据所需的一切都要容易。如果这个问题在FF55中没有解决,我们将需要足够的时间来解决。您可以尝试使用广播频道api:它在firefox 55 beta:)上运行良好,如何在FF54中临时修复?当FF55释放时?。谢谢