【发布时间】:2017-02-02 15:30:37
【问题描述】:
我正在使用 Chrome 的 native messaging API 连接到我在 Go 中使用 Cobra library 开发的本机主机。本机应用程序有一个独立的 CLI(用 Cobra 实现),并且裸命令(不带任何参数)开始通过标准输入侦听 JSON,标准输入是 Chrome 与之交互的 API。
但是,每次扩展程序向本机消息传递主机发出请求时,它都会失败(客户端只是立即与进程断开连接)。当我使用 --enable-logging 标志启动 Chrome 时,我可以看到本机主机使用 unknown command "chrome-extension://cnjopnegooahjdngnkhiokognkdjiioc/" for "--native-app-name--" 出错。这是 Cobra 的错误消息,表示“chrome-extension://cnjopnegooahjdngnkhiokognkdjiioc/”被用作参数,这似乎意味着 Chrome 正在使用 app-name chrome-extension://cnjopnegooahjdngnkhiokognkdjiioc/ 而不是 app-name 调用本机主机。
这是我在扩展程序中用来调用本机主机的代码:
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。你知道这在任何地方都有记录吗?
-
这个正在记录中,见codereview.chromium.org/2271143002
-
@wOxxOm 您能否将其格式化为答案?
-
@Xan,补丁登陆了,所以我按要求添加了答案。
-
@wOxxOm 我已经注意到并投了赞成票。谢谢!
标签: google-chrome google-chrome-extension chrome-native-messaging