Martovitskiy
@Martovitskiy

Как правильно слушать порт в расширении хрома?

Задача не дать вкладке умереть, а если коннект с фоновой страницей пропал, то перезагрузить
background.js

chrome.extension.onConnect.addListener(function(port) {
        console.log("Connected .....");
        port.onMessage.addListener(function(msg) {
             try{
                port.postMessage('active_port');
             } catch {
                port.postMessage('disable_port');
             }
        });
   })


script.js
setInterval(() => {
    try {
        var port = chrome.extension.connect({
            name: "Sample Communication"
        });
        port.postMessage("active back");
        port.onMessage.addListener(function(msg) {
            console.log(msg);
        });
    } catch {
        localStorage.setItem('reload_' + appId, 1);
        location.reload();
    }

}, 5000);
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
zkrvndm
@zkrvndm
Архитектор решений
Каждую секунду отправляйте из контент-скрипта сообщение в фоновый процесс:
chrome.extension.sendMessage('Ваше сообщение');

В фоновом процессе слушайте приходящие сообщения:
chrome.extension.onMessage.addListener(function(message) {
	console.log('Принято сообщение: ' + message);
});

Если связь с определенной вкладкой потеряна, пересоздаете его или обновляйте.

P. S. Существуют и иные способы предотвратить заморозку вкладки, если интересно, расскажу.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 03:54
1500 руб./за проект
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект