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

がところでこれはどちらか呼び出されることはありません。

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

これは私がそうしようとすると、私が得るものです:クロス延長メートルのために働くonConnectExternal

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

拡張機能の間ではエッセンシャル化されていますが、ネイティブメッセージホスティングでは機能しないようです。どんな助けもありがとう。ありがとう

答えて

1

chrome.runtime.onConnectおよびchrome.runtime.onConnectExternalは、着信接続についての通知であるため、発信接続の状態に関するものではありません。

pulse_tracker_portは、onConnectプロパティを持たないPort objectです。

ポートオブジェクトのイベント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

ありがとうございます、私のシステムで今すぐ最後のエラーメッセージがあります: : "ネイティブホストが終了しました。"そのネイティブホストをループに入れておく必要があるようです。 – Asesh

+0

あなたの必要に応じて、(新しいホストを毎回実行する)runtime.SendNativeMessageがあなたをより良く務めるかもしれません。 – Xan

+0

私はそれを得ましたが、私たちの現在のプロジェクトでは、一定の間隔でいくつかのタスクを実行するためにそれを実行し続ける必要があります。どうもありがとう :) – Asesh

関連する問題