gpt4 book ai didi

javascript - 如何确定 connectNative 是否失败或成功

转载 作者:行者123 更新时间:2023-12-01 03:49:55 25 4
gpt4 key购买 nike

我已成功将我的扩展连接到我们的 native 主机:

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

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

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 适用于扩展程序之间的跨扩展程序消息传递,但看起来不适用于 native 消息托管。任何帮助,将不胜感激。谢谢

最佳答案

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,如果端口断开,它会抛出错误。

关于javascript - 如何确定 connectNative 是否失败或成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43321137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com