Я пытаюсь использовать встроенную функцию обмена сообщениями расширения Chrome.У меня была запущена программа на C #, которая будет использовать стандартный вывод для записи данных.И в расширении chrome background.js файл chrome.runtime.onConnectExternal.addListener () никогда не запускался.На странице расширения Chrome появилась следующая ошибка:
Unchecked runtime.lastError: Error when communicating with the native messaging host.
Context_generated_background_page.html
Stack Trace
_generated_background_page.html:0 (anonymous function)
Ниже приведена информация о проекте тестирования.
Приложение C #.Этот метод будет вызван, даже если он запущен в приложении.
public static void Write(JToken data)
{
var json = new JObject();
json["data"] = data;
var bytes = System.Text.Encoding.UTF8.GetBytes(json.ToString(Formatting.None));
/*
foreach (var b in bytes)
Console.WriteLine(b);
*/
var stdout = Console.OpenStandardOutput();
stdout.WriteByte((byte)((bytes.Length >> 0) & 0xFF));
stdout.WriteByte((byte)((bytes.Length >> 8) & 0xFF));
stdout.WriteByte((byte)((bytes.Length >> 16) & 0xFF));
stdout.WriteByte((byte)((bytes.Length >> 24) & 0xFF));
stdout.Write(bytes, 0, bytes.Length);
stdout.Flush();
}
background.js (обновление 1)
var port = chrome.runtime.connectNative('applistener');
port.onMessage.addListener(function(msg) {
console.log("Received" + msg);
});
port.onDisconnect.addListener(function() {
console.log("Disconnected");
});
Chromeфайл манифеста расширения (manifest.json).
"permissions": [ "nativeMessaging","activeTab", "declarativeContent", "storage"],
Файл манифеста собственного приложения. (almanifest.json)
{
"name": "applistener",
"description": "Chrome native messaging test",
"path": "C:\\Users\\xyz\\_test\\AppListener\\AppListener\\bin\\Release\\AppListener.exe",
"type": "stdio",
"allowed_origins": [ "chrome-extension://xxxxxmanextensionidxxxxxx/"]
}
Создать раздел реестра.Следовал инструкции от: https://developer.chrome.com/extensions/nativeMessaging#native-messaging-host-location
И я вижу ключ от Computer \ HKEY_CURRENT_USER \ Software \ Google \ Chrome \ NativeMessagingHosts \ applistener
Я предполагаю, что при возникновении событияв собственном приложении в расширении chrome background.js должно быть запущено событие слушателя.Но я не видел, чтобы это событие сработало.
Update1: измените код в background.js, используя пример кода из документации Google.Событие port.onDisconnect.addListener () сработало, но все равно получаю сообщение об ошибке:
Unchecked runtime.lastError: Error when communicating with the native messaging host.
В данный момент я пытаюсь сузить проблему.Я полагаю, мой параметр реестра правильный?а метод записи в нативном приложении это проблема?