Я пытаюсь установить связь между расширением Chrome и собственным процессом Python (у меня есть некоторый опыт работы с Python, но я новичок, когда дело касается Javascript). Я использую следующий пакет Python: https://pypi.org/project/nativemessaging/
На данный момент я желаю, чтобы расширение Chrome отправляло сообщение собственному процессу, а затем регистрировало ответ на консоль.
Для моего файла background.js
у меня:
chrome.browserAction.onClicked.addListener(function (tab) {
var port = chrome.runtime.connectNative('com.drubbels.application_name');
port.onMessage.addListener(function(msg) {
console.log("Received" + msg);
});
port.onDisconnect.addListener(function() {
console.log("Disconnected");
});
port.postMessage({ text: "Hello, host!" });
});
На родном Python конце буквально просто:
import nativemessaging
print("Host active...")
while True:
message = nativemessaging.get_message()
print('Received', message)
if message == "hello":
print("world")
nativemessaging.send_message(nativemessaging.encode_message("world"))
Хост зарегистрирован на /home/drubbels/.config/google-chrome/NativeMessagingHosts/com.drubbels.application_name.json
с:
{
"name": "com.drubbels.application_name",
"description": "A test host application for Chrome native messaging",
"path": "/path/to/host/host.py",
"type": "stdio",
"allowed_origins": ["chrome-extension://********************************/"]
}
Щелчок по значку расширения просто приводит к сообщению об ошибке Unchecked runtime.lastError: Native host has exited.
На родном конце ничего не происходит.
На самом деле, мне просто нужно минимальный рабочий пример взаимодействия между расширением и собственным процессом Python. Приходит ли это в форме открытого порта или отдельных сообщений, каждый раз явно указывающих имя процесса, не имеет значения.