【问题标题】:Chrome Native Messaging with electron app带有电子应用程序的 Chrome 原生消息传递
【发布时间】:2017-02-15 17:36:07
【问题描述】:

我正在尝试在 OSX 上的 chrome 扩展程序和电子应用程序之间建立通信。

我在~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.company.app.json 中有 JSON 文件

{
    "name": "com.company.app",
    "description": "MyApp",
    "path": "/Users/johnryan/Desktop/Code/electron-app/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar",
    "type": "stdio",
    "allowed_origins": ["chrome-extension://xxxxxxxxxxxx"]
}

在 chrome 扩展上,我有一个简单的本地消息调用:

chrome.runtime.sendNativeMessage('com.company.app',
  { text: "Hello" },
  function(response) {
    console.log("Received " + response);
  });

然后在 main.development.js 我有:

var readline = require('readline');
var rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  terminal: false
});

rl.on('line', function(line){
    console.log("RECEIVED:" + line);
})

但是,当我执行sendNativeMessage 时,我在日志中看不到任何内容。我在这里缺少什么吗?

【问题讨论】:

  • 猜测:由于message starts with a 32-bit binary length 的第一个字节是短消息的 0,因此您应该以二进制模式读取,否则它可能会被 readline 解释为字符串的标准结尾。
  • @wOxxOm 有趣的是我会试一试。我的猜测是电子方面有问题,default_app.asar 看起来很可疑,在其他示例中它似乎指向一个 .js 文件。不确定这是否重要。
  • @john_ryan 你做到了吗?
  • @jonathanwiesel 不完全是,我最终在电子应用程序中启动了一个 http 服务器,然后只是发布到本地服务器
  • @john_ryan 您是否使用electronify-server 来启动本地网络服务器?如果没有,您是否有一些示例代码愿意分享您如何让本地服务器在电子中运行以与 Chrome 扩展程序通信? ???谢谢。

标签: google-chrome-extension stdin electron stdio chrome-native-messaging


【解决方案1】:

最近偶然发现这个问题,发现windows平台不支持从主线程访问stdin和stdio。我暂时通过在我的电子应用程序中启动 http 服务器并在 windows 平台中从 http 端口监听来使其工作。

但是,在 MAC OS 上也应该可以正常工作,只需使用 electron-packager 构建您的电子应用程序,并在路径变量中提供您的 exe(您的电子应用程序的 exe)的路径,如下所示。

{
    "name": "com.company.app",
    "description": "MyApp",
    "path": "/Users/johnryan/Desktop/Code/electron-app/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.exe",
    "type": "stdio",
    "allowed_origins": ["chrome-extension://xxxxxxxxxxxx"]
}

为了让它在 Windows 中工作,请参阅这篇文章,它可能有一个解决方案,

GitHub -Issue of stdin and stdio in electron application

【讨论】:

    猜你喜欢
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    相关资源
    最近更新 更多