如何确定 connectNative 是失败还是成功

How do I find out if connectNative failed or succeeded

我已成功将我的扩展程序连接到我们的本机主机:

var pulse_tracker_port = chrome.runtime.connectNative('com.cloudfactory.pulsetracker');

但是如何知道连接是否成功呢?无论连接是否成功,'pulse_tracker_report.name' 的值始终为空字符串。

我还尝试添加侦听器以查明连接是否成功,但 none 这些回调被调用:

chrome.runtime.onConnect.addListener(function(port)
{
  console.log('Connected to "Pulse Tracker" @port: ' + port.name);
});

chrome.runtime.onConnectExternal.addListener(function(port)
{
  console.log('Connected to "Pulse Tracker" @port: ' + port.name);
});

顺便说一句,这也不会被调用:

pulse_tracker_port.onConnect.addListener(function(port)
{
   console.log('Connected to "Pulse Tracker" @port: ' + port.name);
});

这是我尝试这样做时得到的结果:

main.js:26 Uncaught TypeError: Cannot read property 'addListener' of undefined

onConnectExternal 适用于扩展之间的交叉扩展消息传递,但看起来不适用于本机消息托管。任何帮助,将不胜感激。谢谢

chrome.runtime.onConnectchrome.runtime.onConnectExternal 在这里不相关,因为它们会通知您传入连接,而不是传出连接的状态。

pulse_tracker_portPort object 没有 onConnect 属性.

你需要做的是立即为端口对象的onDisconnect事件分配一个监听器。如果连接出现问题,将调用侦听器并设置 chrome.runtime.lastError

var pulse_tracker_port = chrome.runtime.connectNative('com.cloudfactory.pulsetracker');
pulse_tracker_port.onDisconnect.addListener(function() { 
  if (chrome.runtime.lastError) {
    console.error(chrome.runtime.lastError);
  }
});

否则,只需尝试使用它,使用 .postMessage().onMessage 事件。对于postMessage,端口断开会报错