問題タブ [shared-worker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
106 参照

javascript - Firefox 57 以降の共有ワーカー バグの機能検出

この質問このバグで議論されているように、共有ワーカーはバージョン 57 以降の Firefox でひどく壊れています。基本的に、「共有」部分がありません。2 つのタブで同じワーカー スクリプトを使用して共有ワーカーを作成すると、ワーカーのインスタンスは 1 つしか作成されませんが、Firefox では 2 つのインスタンスが作成されます。

IE、Edge、または Safari では共有ワーカーがサポートされていないため、共有ワーカーを使用している人なら誰でもこの種の問題に精通しています。そのため、Web ワーカーに期限を設定する必要があります。大丈夫です。バグのある Firefox バージョンでも同じことを行うことができますが、... この場合、共有されていないバージョンのワーカーを送信できるように、機能検出を行うにはどうすればよいでしょうか?

このようなワーカーを使用して、カウンターがリセットされるべきではないときにカウンターがリセットされるかどうかを確認できると考えました。

私の最初のアイデアは、同じページに 2 つの共有ワーカーを作成し、両方のカウンターが 0 かどうかを確認することでした。しかし、そうではありません。これ:

正しい出力が生成されます。

次に、同じページ内の 2 つの iframe でそのスクリプトを実行できるのではないかと考えましたが、サイコロはありません。これも正しいです。

ページを 2 つのタブで開くと、問題が発生します。各タブでカウンターが 0 にリセットされます。しかし、ユーザーが新しいタブを開く必要がある場合、機能検出はあまり役に立ちません。さらに悪いことに、バグは断続的に発生するようです。カウンターがタブ間で正しく保持される場合があります。したがって、このアプローチは機能しません...

これは、機能検出を行うには非常に厄介なバグのようです。誰にもアイデアはありますか?それとも、ユーザー エージェント文字列の解析で立ち往生していますか?

0 投票する
0 に答える
174 参照

javascript - 共有ワーカー - 同じ共有ワーカーの異なるセットを持つことはできますか?

Web アプリケーションの複数のタブ間の通信チャネルとして sharedWorker を実装しました。

ただし、各タブに別のユーザーがログインしている場合、あるタブの sharedWorker が別のタブの sharedWorker と通信することは望ましくありません。

この分離を実現するために sharedWorker コンストラクターに渡すことができるオプションはありますか?

例:オプション内の識別子プロパティ。

おそらくワーカー スクリプト内でこれを処理できることは理解していますが、sharedWorkers のドキュメントはあまり詳細ではなく、既に組み込まれているものを実装したくありません。

ありがとう!

0 投票する
0 に答える
140 参照

javascript - UIスレッドとサービスワーカーの間でWebAssemlyモジュールを共有するには?

私の Web アプリは、重要な操作のために Web アセンブリ モジュールを使用しています。プッシュ通知を処理する Service Worker がセットアップされています。メイン スレッドとプッシュ通知ハンドラーの両方が Web アセンブリ モジュールにアクセスする必要があります。

wasm モジュールを共有するための推奨される方法はありますか?

私が最初に考えたのは、それを Service Worker に入れ、メイン スレッドがその Worker を呼び出すようにすることでした。しかし、それがアイドル状態になる可能性があり、Worker は wasm モジュールを再度ロードして初期化する必要があり、これには約 800 ミリ秒かかります。共有ワーカーを使用することもできますが、サービス ワーカーが共有ワーカーを生成できるとは思わないため、メイン スレッドが閉じているとソリューションは機能しません。

これを行う標準的な方法はありますか?