0

j'ai réussi à connecter mon extension à notre hôte natif:Comment puis-je savoir si connectNative a échoué ou réussi

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

mais comment puis-je savoir si la connexion a réussi ou non? La valeur de 'pulse_tracker_report.name' sera toujours une chaîne vide, peu importe si la connexion a réussi ou non.

J'ai aussi essayé d'ajouter des écouteurs pour savoir si la connexion a réussi ou non, mais aucun de ces callbacks sont invoqués:

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 ce ne sera pas invoquée soit:

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

est ce que je reçois lorsque je tente de le faire:

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

onConnectExternal travaille pour le contre-extension de m essaging entre les extensions, mais il semble que cela ne fonctionne pas pour l'hébergement de messages natifs. Toute aide serait appréciée. Merci

Répondre

1

chrome.runtime.onConnect et chrome.runtime.onConnectExternal ne sont pas pertinents ici, car ils vous notifier sur les connexions entrantes, pas sur l'état des connexions sortantes.

pulse_tracker_port est un Port object qui n'a pas la propriété onConnect.

Ce que vous devez faire est d'affecter immédiatement un écouteur à l'événement onDisconnect de l'objet port. S'il y avait un problème avec la connexion, l'auditeur sera appelé et chrome.runtime.lastError sera mis:

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

Sinon, essayez de l'utiliser, avec .postMessage() et événement .onMessage. Pour postMessage, il va lancer une erreur si le port est déconnecté.

+0

Merci, voici le dernier message d'erreur sur mon système en ce moment: message : "L'hôte natif a quitté." On dirait que je devrais garder cet hôte natif dans une boucle – Asesh

+0

Selon vos besoins, 'runtime.sendNativeMessage' (qui exécute l'hôte à chaque fois) peut vous servir mieux. – Xan

+0

Je l'ai eu mais dans notre projet actuel, nous devrions continuer à l'exécuter pour faire certaines tâches dans un certain intervalle. Merci beaucoup :) – Asesh