Как передать сообщение с сайта на хост и получить ответ в google-chrome-extension
Есть плагин написанный для google-chrome, который связывает сообщения с сайта с компьютером пользователя. Обязательно требование так это что-бы плагин через скрипт background.js держал постоянное соединение, собственно через порт он его и держит, но я не могу никак отправить ответ полученный с хоста на сайт.
То есть я отправляю сообщение с сайта плагину вот так:
// скрипт на сайте
index.js
chrome.runtime.sendMessage(extensionId, {type: "SEND_FROM_WEB_SITE"}, function(response){
console.log(response)
})
Тут я устанавливаю постоянное соединение с компьютером пользователя через порт, принимаю сообщение с вэб-сайта и пытаюсь отправить полученный ответ обратно на сайт.
// скрипт background.js
// устанавливаем соединение
connect()
function onNativeMessage(message){
if(message.type == 'GET_FROM_HOST') {
// ТУТ ПОЛУЧАЮ ОТВЕТ С КОМПЬЮТЕРА ПОЛЬЗОВАТЕЛЯ КОТОРЫЙ НАДО ПЕРЕДАТЬ НА САЙТ ? ВОПРОС КАК
console.log(message);
}
}
function connect(){
port = chrome.runtime.connectNative(hostName);
port.onMessage.addListener(onNativeMessage);
}
function sendNativeMessage(message) {
port.postMessage(message);
}
// слушаем сообщение с вэб-сайта
chrome.runtime.onMessageExternal.addListener(function(request, sender, sendResponse) {
if (request.type == "GET_FROM_WEB_SITE"){
// ПОЛУЧАЕМ СООБЩЕНИЕ С ВЕЭ-САЙТА И ОТПРАВЛЯЮ ЕГО НА КОМПЬЮТЕР ПОЛЬЗОВАТЕЛЯ, КАК МНЕ ПЕРЕДАТЬ ЧЕРЕЗ "sendResponse" ОТВЕТ НА САЙТ
sendNativeMessage(request);
}
});
На всякий случай файл манифеста с разрешениями // manifest.json
{
"name": "app plugin",
"short_name": "app",
"description": "app",
"manifest_version": 2,
"permissions": ["nativeMessaging", "activeTab", "tabs", "storage"],
"background": {
"scripts": ["background.js"],
"persistent": false
},
}