0

我已成功地扩展我连接到我们的天然宿主:如何找出是否connectNative失败或成功

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

但我要如何找出如果连接成功与否?无论连接是否成功,'pulse_tracker_report.name'的值将始终为空字符串。

我也尝试添加监听器,以找出是否连接成功与否,但没有这些回调都被调用:

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); 
}); 

BTW,这将不会被调用之一:

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作品为交叉延伸m在扩展之间进行消息传递,但看起来不适用于本地消息托管。任何帮助,将不胜感激。谢谢

回答

1

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,如果端口断开连接,它将引发错误。

+0

谢谢,这是我现在系统上的最新错误消息:消息 :“Native host has exited。”看起来我必须将该本地主机保留在循环中 – Asesh

+0

根据您的需要,'runtime.sendNativeMessage'(每次运行主机一次)可以为您提供更好的服务。 – Xan

+0

我明白了,但是在我们目前的项目中,我们应该继续运行它来在一定的时间间隔内完成一些任务。非常感谢 :) – Asesh

相关问题