Я использую Chrome native messaging API для подключения к собственному хосту, который я разрабатываю в Go с помощью Cobra library. Нативное приложение имеет автономный CLI (реализованный с помощью Cobra), а голая команда (без каких-либо аргументов) начинает прослушивать JSON через stdin, который должен быть API для взаимодействия с Chrome.Как вызвать собственный сервер сообщений Chrome без аргументов?
Однако он терпит неудачу каждый раз, когда расширение запрашивает собственный сервер обмена сообщениями (клиент сразу же отключается от процесса). Когда я запускаю Chrome с флагом --enable-logging
, я вижу, что собственный хост является ошибкой с 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. Вы знаете, что это документировано где угодно? –
Это процесс документирования, см. Https://codereview.chromium.org/2271143002/ –
@wOxxOm Не могли бы вы отформатировать это в ответ? – Xan