1

私が理解していることから、HTML5 の共有 Web ワーカーの大きな利点は、単一の個別の実行スレッドで複数の接続を受け入れることができることです。

私の質問は、Google Chrome で単一のスレッドとして動作するように、SharedWorker と複数の接続を取得した人はいますか? 最新バージョン 12.0.742.112 を使用しています。

デモ: http://demos.zulius.com/html5/sharedworker

ソース (デモがダウンしている場合): index.htmlsharedworker.js

デモでは、2 つの個別のイベント リスナーを確立します。予想される出力は次のとおりです。

foo got message: Hello World! You are connection #1
bar got message: Hello World! You are connection #2

デモでは、両方のイベント リスナーが正しく起動しますが、接続カウント変数は SharedWorker スクリプトで維持されません。これにより、SharedWorker への各接続が個別のスレッドで実行されていると思われます。

私は何か間違ったことをしていますか?または、SharedWorker に対する Chrome のサポートは完全にはありませんか?

更新:デモが動作するようになりました。

4

2 に答える 2

2

Worker には 2 つのリスナーがありますが、Worker を開始するのは 1 回だけなので、2 人の所有者ではなく 1 人の所有者によって 1 つの Worker が共有されます。リスナーの数を増やしても、所有権には影響しません。

ここで例を見ることができます: http://weblog.bocoup.com/javascript-web-workers-chrome-5-supports-new-sharedworker

2 つのフレームがあり、1 つは iframe を含み、もう 1 つは iframe 内にあります。どちらも Worker のメソッドを呼び出すstartため、2 人の所有者によって共有されます。startメソッドが 2 回呼び出されるため、イベントonconnectは 2 回発生する必要があり、したがってconnection.count2 と等しくなります。

于 2011-07-06T03:52:03.170 に答える
0

共有 Webworker では、最後のブラウザー セッションが終了するまでコンテキストが有効です。共有 Webworkers は、ブラウザー タブの周りのコンテキストを維持できます。それらは、データの同じコンテキストで要求に応答します。

データのコンテキストの変更はすべての接続に影響します。単一のコンテキスト変更ですべての接続を更新できる可能性があり、最後の接続が終了するまでデータを維持できます。すべてのビューで接続の変更を維持できます。

これは、複数の接続を持つ共有 Web ワーカーのデモです。

http://www.antkorp.in/sharedworkers/

于 2013-01-18T12:28:01.787 に答える