Ожидается:
Веб-приложение отправляет сообщение на расширение chrome, расширение chrome отвечает на приложение wep.
Отправка сообщения из веб-приложения:
const chromeExtensionId = '1234567890example'
chrome.runtime.sendMessage(chromeExtensionId, { message: "version" },
function (reply) {
console.log(reply)
if (reply) {
if (reply.version) {
if (reply.version >= 0.01) {
console.log('true')
} else {
console.log('false')
}
}
}
}
);
Прослушивание и ответ на сообщение из фона. js:
chrome.runtime.onMessageExternal.addListener(
function(request, sender, sendResponse) {
if (request) {
if (request.message) {
if (request.message == "version") {
sendResponse({version: 0.1});
}
}
}
return true;
}
);
В расширении chrome manifest.json
:
"externally_connectable": {
"matches": [
"https://*.productionwebsite.com/*",
"http://localhost:3000/"
]
},
Локально это работает, как и ожидалось (режим разработчика). Я ожидаю, что это сработает аналогично, как только будет опубликовано это расширение chrome.
Факт:
Я обновляю chromeExtensionId до опубликованного идентификатора расширения chrome и перезапускаю браузер. Веб-приложение отправляет сообщение на опубликованное расширение chrome. JS Консоль веб-приложения показывает:
Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.