1
我試圖設置OSX上的Chrome擴展和電子應用程序之間的通信。Chrome原生消息與電子應用程序
我在~/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"]
}
JSON文件上的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
我沒有看到任何日誌中的東西。有什麼我在這裏失蹤?
猜測:由於[消息用32位二進制長度開始](HTTPS ://developer.chrome.com/extensions/nativeMessaging#native-messaging-host-protocol)短消息的第一個字節是0,所以你應該用二進制模式讀取,否則它可能會被readline解釋爲字符串的標準結尾。 – wOxxOm
@ wOxxOm有趣的我會試試看。我的猜測是電子方面出現了問題,default_app.asar似乎很腥,在其他例子中,它似乎指向.js文件。不知道這是否重要,但。 –
@john_ryan你設法做到這一點嗎? – jonathanwiesel