5

人物のポートレートを処理するキオスクがあります。Chromeで実行されています。

キオスクを使用する200人に1人は、プロセス中にキオスクがフリーズすることになります。それがフリーズするとき、私は「ああスナップ」を決して得ず、ページはちょっとハングします。

ページを監視してハートビートをチェックする拡張機能を作成できるかどうか疑問に思っていました。30秒経っても表示されない場合は、ウィンドウをリロードしてください。

どんな助けでも素晴らしいでしょう。

4

1 に答える 1

5
  1. キオスクページのコンテンツスクリプトに、X秒ごとにバックグラウンドページにメッセージを送信させる

    コンテンツスクリプトの場合:

    var port = chrome.extension.connect({ name: "keep-alive" });
    
    port.postMessage('is-alive', { alive: true });
    
    setInterval(function () {
        port.postMessage('is-alive', { alive: true });
    }, 1000 * 15);
    
  2. バックグラウンドページがメッセージが一定時間後に戻ってこないことを検出した場合は、タブをリロードします

    バックグラウンドページ:

    var last = Date.now();
    var interval = 1000 * 15;
    
    chrome.extension.onConnect.addListener(function (port) {
        if (port.name === 'keep-alive') {
            port.onMessage.addListener(function (data) {
                if (data.type === 'is-alive' && data.payload.alive === true) {
                    last = Date.now();
                }
            });
        }
    });
    
    setInterval(function () {
        if (Date.now() - last > interval) {
            // Reload the tab...
        }
    }, interval);
    

タブの再読み込みについては、chrome.tabsドキュメントを参照してください。tabsマニフェストの許可リストに追加する必要があります。

メッセージパッシングについて詳しく知りたい場合は、メッセージングドキュメントを参照してください。

于 2012-07-22T10:48:54.937 に答える