私はC++で書かれたネイティブアプリとクロムエクステンションを持っています。native-appとchrome-extensionの間の通信
私はそれらの間で 'chrome native messaging'を使用して通信しています。
ネイティブアプリコード:
int main(int argc, char* argv[]) {
unsigned int a, c, i, t=0;
std::string inp; do {
inp="";
t=0;
// Sum the first 4 chars from stdin (the length of the message passed).
for (i = 0; i <= 3; i++) {
t += getchar();
}
// Loop getchar to pull in the message until we reach the total
// length provided.
for (i=0; i < t; i++) {
c = getchar();
inp += c;
}
// Collect the length of the message
unsigned int len = inp.length();
//// We need to send the 4 btyes of length information
std::cout << char(((len>>0) & 0xFF))
<< char(((len>>8) & 0xFF))
<< char(((len>>16) & 0xFF))
<< char(((len>>24) & 0xFF));
//// Now we can output our message
std::cout << inp <<std::endl;
flushall();
}while(cnt < 2);
return 0; }
ここで私は標準入力にクロームの拡張によって送信されたメッセージを読んでいます。それをstdoutに書き込んで同じメッセージを送り返します。
拡張は、()
これが機能している...しかし..私はwhileループの連続の下で私のプログラムを置く
、フローは一度だけ実行されるのPostMessageを使用しています!
すなわちport.postMessage({ 'テキスト': 'hello_1は'})期待通りにエコーバックされますが、私は
port.postMessage({ 'テキスト': 'hello_2を'})を行う場合、それはありませんエコーバック。
問題の内容を理解できません。スレッディングが必要ですか?
助けてください!
ありがとうございます!
親愛なる@bkdc、質問があります。ネイティブメッセージングの種類は何ですか?それはクロームアプリですか、拡張機能ですか?つまり、拡張機能にネイティブメッセージングサンプルを含めることは可能ですか? –
@ H.Aqjnこの場合、拡張子です! – rohitvk
@ H.Aqjnネイティブメッセージングは、npapi/npruntimeプラグインと多少似た役割を果たします。これは、ブラウザができることの限界を「外に出て」他の機能を実装する方法を提供することです。ただし、ネイティブメッセージングは、そのような種類の機能のサブセットのみを提供するため、npapi/npruntimeを直接的に置き換えるものではありません。ネイティブメッセージング(APIとして)は、Chrome拡張機能とChromeアプリケーションの両方で、通信プロトコルを実装する外部アプリケーションからデータを送受信するために使用できます。 – bkdc