1

我创建了一个 Chrome 扩展并使用Native Messaging连接到 C++ 本机应用程序。

但是对于 Chrome 扩展发送到本机主机的每条消息,都会创建一个新的主机 exe 实例。我认为它效率不高,因为我向主机发送了很多消息。

Chrome 扩展程序和本机消息传递主机之间是否存在长期连接方法?

4

1 回答 1

1

如果您使用 发送消息chrome.runtime.sendNativeMessage,或者为每条消息创建一个新的 Port 对象chrome.runtime.connectNative,那么是的,这是低效的。

的目的chrome.runtime.connectNative是创建和维护一个开放的消息端口,您可以重复使用该端口。只要您的本机主机以 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();
于 2014-08-12T10:00:13.137 回答