我创建了Chrome扩展程序并使用Native Messaging连接到C ++本机应用程序。
但是对于Chrome扩展程序发送到本机主机的每条消息,都会创建一个新的主机exe实例。我认为它没有效率,因为我向主机发送了许多消息。
Chrome扩展程序和本机消息传递主机之间是否存在长期连接方法?
答案 0 :(得分:1)
如果您使用chrome.runtime.sendNativeMessage
发送消息,或者为每条消息创建一个带有chrome.runtime.connectNative
的新Port对象,那么是的,效率很低。
chrome.runtime.connectNative
的目的是创建并维护一个可以重用的消息Port。只要您的本机主机以Chrome所期望的方式运行并且不会关闭连接本身,它就会是一个长期连接。
function connect(messageHandler, disconnectHandler){
var port = chrome.runtime.connectNative('com.my_company.my_application');
if(disconnectHandler) { port.onDisconnect.addListener(disconnectHandler); }
if(messageHandler) { port.onMessage.addListener(messageHandler); }
return port;
}
var hostPort = connect(/*...*/);
port.postMessage({ text: "Hello, my_application" });
// Goes to the same instance
port.postMessage({ text: "P.S. I also wanted to say this" });
// If you want to explicitly end the instance
port.disconnect();