我使用Chrome的native messaging API連接到我正在使用Cobra library在Go中開發的本機主機。本地應用程序有一個獨立的CLI(用Cobra實現),而bare命令(沒有任何參數)通過stdin開始監聽JSON,這意味着它是一個供Chrome瀏覽器交互的API。如何在不帶參數的情況下調用Chrome本機訊息主機?
但是,每當擴展程序向本地消息傳遞主機發出請求時(客戶端立即斷開與進程的連接),它都會失敗。當我用--enable-logging
標誌啓動Chrome時,我可以看到本地主機與unknown command "chrome-extension://cnjopnegooahjdngnkhiokognkdjiioc/" for "--native-app-name--"
錯誤。這是Cobra的錯誤消息,意思是「chrome-extension:// cnjopnegooahjdngnkhiokognkdjiioc /」被用作參數,這似乎意味着Chrome正在調用本地主機,而不是僅僅使用app-name
而是使用app-name chrome-extension://cnjopnegooahjdngnkhiokognkdjiioc/
。
下面是我從擴展使用調用本地主機代碼:
var port = chrome.runtime.connectNative('app-name');
port.onMessage.addListener(function(msg) {
console.log(msg);
});
port.onDisconnect.addListener(function() {
console.log("disconnected");
});
port.postMessage({cmd:"ping"});
我無法找到這表明,Chrome會將擴展地址作爲參數,或者是否可以在任何文件被阻止。
這非常有用,謝謝wOxxOm。你知道這被記錄在任何地方嗎? –
這是正在被記錄的過程中,請參閱https://codereview.chromium.org/2271143002/ –
@wOxxOm你可以請格式化爲答案? – Xan