如何在Chrome扩展程序和本机消息传递主机之间保持长期连接?

时间:2014-08-12 09:39:20

标签: google-chrome-extension chrome-native-messaging

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

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

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

1 个答案:

答案 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();