Я пытаюсь настроить связь между расширением хрома и электронным приложением на OSX.Chrome Native Messaging с электронным приложением
У меня есть файл в формате JSON в ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.company.app.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.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
Я не вижу никаких в журналах. Здесь что-то не хватает?
Предположение: поскольку [сообщение начинается с 32-битовой двоичной длиной] (HTTPS : //developer.chrome.com/extensions/nativeMessaging#native-messaging-host-protocol) первые байты равны 0 для коротких сообщений, поэтому вы должны читать в двоичном режиме, иначе он может интерпретироваться как стандартный конец строки с помощью readline. – wOxxOm
@wOxxOm Интересно, что я попробую. Я предполагал, что на электронной стороне было что-то не так, default_app.asar казался подозрительным, а в других примерах он, казалось, указывал на файл .js. Не уверен, что это важно. –
@john_ryan вам удалось это сделать? – jonathanwiesel