当我点击“发送”按钮(关闭 NativeMessaging 方法)时,它会启动一个新实例,我只想让它只有一个实例,并且连接正确运行,这样我就可以发送可持续的消息。非常感谢!
那是我的background.js代码:
var port = null;
console.log("visited test!");
chrome.runtime.onMessage.addListener(
function (request, sender, sendResponse) {
if (request.type == "launch") {
console.log("visited 333!");
connectToNativeHost(request.message);
}
return true;
});
// chrome.runtime.onMessage.addListener(function(msg) {
// console.log("Received" + msg.text);
// });
//onNativeDisconnect
function onDisconnected() {
console.log(chrome.runtime.lastError);
console.log('disconnected from native app.');
port = null;
}
function onNativeMessage(message) {
console.log('recieved message from native app: ' +JSON.stringify(message));
}
//connect to native host and get the communicatetion port
function connectToNativeHost(msg) {
var nativeHostName = "com.example.test";
// console.log(typeof(nativeHostName));
// console.log(nativeHostName);
//port = chrome.runtime.connectNative(nativeHostName);
port = chrome.runtime.sendNativeMessage(nativeHostName,{ message: msg });
port.onMessage.addListener(onNativeMessage);
port.onDisconnect.addListener(onDisconnected);
port.postMessage({ message: msg });
}
那是我的content.js代码:
var launch_message;
document.addEventListener('myCustomEvent', function (evt) {
console.log("visited!");
chrome.runtime.sendMessage({ type: "launch", message: evt.detail }, function (response) {
console.log(response);
// console.log("visited here!");
});
}, false);
这是我的测试 HTML 文件代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test Communicate with native app</title>
<script>
function startApp() {
var evt = document.createEvent("CustomEvent");
evt.initCustomEvent('myCustomEvent', true, false, "im information");
// fire the event
document.dispatchEvent(evt);
console.log("The button was clicked!");
}
</script>
</head>
<body>
<button type="button" onclick="startApp()" id="startApp">startApp</button>
</body>
</html>
我使用 C# 语言编写演示本机应用程序。