2012-01-08 10 views
1

クロムエクステンション内のすべてのコンテンツスクリプトに対して1つのwebsocket接続のみを実現する方法はありますか?クロムエクステンションのすべてのコンテンツスクリプト用に1つのwebsocket接続

コンテンツスクリプトでは、拡張機能のページで定義された変数や関数を使用できないため、私の知る限りはありません。

なぜwebsocket接続が1つだけですか?なぜなら、websocket接続を開くことは、何度も何度も何度もやっていると、比較的高価なプロセスです。

答えて

5

たぶん私はあなたを誤解が、私はこれが解決策だと思う:背景ページで

  1. オープン用WebSocket。
  2. バックグラウンドページとコンテンツスクリプトの間にPort接続を作成します。
  3. 送るとポートとのWebSocket
+0

おかげを通じてJSONのマッサージを受けます。確かに、私は何か似たような試みたが、問題は、(jqueryの読み込み機能を持つ)拡張ページを読み込んで、その中にコンテンツスクリプトを呼び出すことだったと思う:)今私はそれを実現...私は再び適切な実装。 –

+0

「ポート接続」とはどういう意味ですか?バックグラウンドスクリプトでインスタンス化されたWebSocketがありますが、必ずしもロードされません。ページを更新すると、そのページは更新されません。時にはそれはします。 background.jsがchromeの起動時に一度読み込まれているのかどうかは分かりません。私はcontent_scriptsがロードされたときにインスタンス化する必要がありますが、background.jsにあります。 – chovy

+0

@chovyの背景ページは、Chromeの起動時に一度起動され、バックグラウンドで無期限に実行されます。 Chromeはページを訪問するときに、すべての目録をチェックして、どのコンテンツスクリプトを実行する必要があるかをチェックします。コンテンツスクリプトは、実行中に多くのアクションを実行することができます。つまり、バックグラウンドページに接続できます。ポートは、コンテンツスクリプトとそのバックグラウンドページとの間の接続です。異なるコンテキストで実行されるため、直接通信することはできません。 – hamczu

関連する問題