2011-07-05 21 views
1

私が理解するところでは、HTML5の共有Webワーカーの大きな利点は、1つの別々の実行スレッドで複数の接続を受け入れることができることです。HTML5:複数の接続を持つ共有Webワーカー

私の質問は、誰かがSharedWorkerと複数の接続をしてGoogle Chromeで1つのスレッドとして動作させることですか?私は最新バージョン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のサポートはあまりありませんか?

更新:デモが今すぐ動作します。

+0

ちょうど提案...ウェブの労働者が新しい技術が..あなたはカナリアまたは少なくともベータチャンネルであるべきです。あなたの問題については知りません:(まだ多分安定していないかもしれませんか?) – Achshar

+0

ここに複数の接続を持つ共有Webワーカーのデモがあります。http://www.antkorp.in/sharedworkers/ –

答えて

2

あなたはWorkerのリスナーを2人持っていますが、Workerを1回起動するだけなので、2人のオーナーではなく1人のオーナーが1人のWorkerを共有します。リスナーの数を増やしても所有権には影響しません。

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

それは2つのフレーム、IFRAMEとiframe内の1を含むものがあります。両方とも、労働者のstartメソッドを呼び出すので、2人の所有者が共有します。 startメソッドが2回呼び出されたため、onconnectイベントを2回発生させて、connection.countを2にする必要があります。

+0

ありがとうございます。すべての接続の新しいSharedWorkerインスタンス(これはW3Cの例:http://www.w3.org/TR/2009/WD-workers-20091029/#shared-workersと一致しませんが)私はデモを更新しました –

0

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

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

ここには、複数の接続を持つ共有Webワーカーのデモがあります。

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

+0

あなたのリンクは死んでいます。更新できますか? – Wilt

関連する問題