首页 > 解决方案 > 重新加载扩展程序时,通过连接本机消息来运行多个本机应用程序

问题描述

在 chrome 扩展中,我使用本地消息传递来调用本地应用程序。但是我发现了一个问题,每次我重新加载扩展时,似乎都会为应用程序创建一个新进程。port根据文档,如果断开连接或页面关闭,应用程序将结束。这是否意味着重新加载扩展不会关闭background页面?我怎么解决这个问题?另外,我在 chrome 任务管理器中找不到我的本地应用程序进程。

// background.js

var port = null;
connectToNativeHost();

// Receive message from other js
chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        console.log("background recieved message from " + sender.url + JSON.stringify(request));
        parseMessage(request);
    }
);

//onNativeDisconnect
function onDisconnected()
{
    console.log(chrome.runtime.lastError);
    console.log('disconnected from native app.');
    port = null;
}

// Receive message from native app
function onNativeMessage(message)
{
    console.log('recieved message from native app: ' + JSON.stringify(message));
}

//connect to native host and get the communicatetion port
function connectToNativeHost()
{
    var nativeHostName = 'com.group_project.time_tracker';
    port = chrome.runtime.connectNative(nativeHostName);
    port.onMessage.addListener(onNativeMessage);
    port.onDisconnect.addListener(onDisconnected);
    console.log("connected");
}

// Send message to native app
function sendMessage(message)
{
    port.postMessage(message);
    console.log('send messsage to native app: ' + JSON.stringify(message));
}

标签: google-chromegoogle-chrome-extensionchrome-native-messaging

解决方案


推荐阅读