google-chrome - 重新加载扩展程序时,通过连接本机消息来运行多个本机应用程序
问题描述
在 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));
}
解决方案
推荐阅读
- python - 使用 Python 输出多个随机密码
- react-native - 仅反应原生构建(android)
- javascript - 如何使用 ajax 通信 python-mysql 和 js?
- c# - 在 .Net Dynamics CRM 应用程序中保存要联系的父帐户
- asp.net-core - 常规方法和异步方法有什么区别(OnGet vs OnGetAsync)
- firebase - 为什么functions.config() 返回{}?
- python - Python 编写 CSV 文件
- c# - c#定义接收方法作为参数的方法,具有不同的重载
- python - 使用自己的模型作为用户登录
- django - Django 2.0:ModelChoiceField 中的 TextInput 显示 id 而不是值