2012-03-23 3 views
1

複数のリスナーがある場合、onConnect、connect、およびport.postMessage/onMessageがどのように動作するのか不思議です。ドキュメントには何が起こっているのか、またどこに接続が入っていないのかわかりません。extension.onConnect、extension.connectおよびPortの動作

私は3つのコンテキスト(バックグラウンドページ、コンテンツスクリプト、ブラウザアクションポップアップ)を持っています。バックグラウンドページは両方にメッセージを送信したいのですが、単純に接続()してからポート経由でメッセージを送信できますか?領収書の確認を希望する場合onConnectを受け取った両方のコンテキストで、port.postMessage({received:true})と言うことができますか?私は接続する人に2つのメッセージを受け取りますか?私はconnect()を呼び出したバックグラウンドページにonConnect()メッセージを受け取りますか?

私はhttp://code.google.com/chrome/extensions/messaging.htmlhttp://code.google.com/chrome/extensions/extension.html#を読んだことがあります。sendRequestとonRequestがどのように機能しているかを明確にしていますが、sendRequestから十分に抜け出すことはできません。

私の質問は、ポートオブジェクトには何個の「終了」があり、どのエンドからの「切断」コールをどのように処理するのですか?

答えて

1

実際にはポートはかなりシンプルです。私は例がうまくいくと思いますが、私はコンテンツスクリプトを使用していませんが、pop.jpと呼ばれるビルドしたユーティリティスクリプトがあり、ポップアップとバックグラウンドのページ間の連続2方向通信が可能です。

https://github.com/jjNford/chrome-extension-socket

私は現在、この拡張機能でそれを使用しています:

https://chrome.google.com/webstore/detail/jgekomkdphbcbfpnfjgcmjnnhfikinmn

postTaskのAPIは、UXの目的のためにいいです。私はあなたの質問に直接答えなかったことを知っていますが、これがあなたに役立つことを願っています。

+0

私は例が気に入っていますが、私がポートについて理解していないのは、それらが常に2つの終端しか持たないか、アプリケーションのさまざまな部分間で通信できるかどうかです。 – Daniel

+0

APIはポートが「リスナー」を作成する方法を説明し、Googleが通常は複数のエンド(port.nameで区別される)を持つことができると想定する方法を知っています。これを理解する最良の方法は、テストすることです。 My GitHub Repoは例を示しています...欠けているものを追加してください。 – jjNford

関連する問題