問題タブ [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 に答える
872 参照

javascript - 共有ワーカー内で EventSource を実行する方法は?

サーバーからメッセージを受信するためにサーバー送信イベントを実装しました。別の質問でそれをどのように実装したかを説明します

現在、ユーザーが複数のブラウザタブを介してサーバーへの複数の接続を開くのを防ぐために、共有ワーカー内で実行しようとしています。

共有ワーカー内でコードを実行するために私が行ったことは次のとおりです

ファイルcallesworker.jsを作成し、このコードをその中に入れました

次に、HTML ページが読み込まれると、このコードを呼び出します

しかし、コードはサーバーからメッセージを返しません。

EventSource共有ワーカー内でイベントを正しく実行するにはどうすればよいですか?

0 投票する
1 に答える
1305 参照

javascript - 開いているスクリプトのメッセージをプッシュするために、SharedWorker内でサーバー送信イベントを「1回だけ」開始する方法は?

ほとんど問題なく動作するサーバー送信イベント (SSE)の実装があります。私が抱えている唯一の問題は、「1 人のユーザーがサーバーに多くの接続を持つことができる」ことです。基本的に、ユーザーが複数の Web ブラウザーのタブを開くと、各タブはサーバーに新しいサーバー送信イベント要求を作成し、1 人のユーザーから多くの要求が実行されます。

この問題を解決するには、Javascript のSharedWorker内で SSE を実行したいと考えています。

これは、SharedWorker と通信する SSE が 1 つしかないことを意味します。次に、すべてのページ/Web ブラウザーが SharedWorker と通信します。これにより、ユーザーごとに 1 つの SSE のみを許可するという利点が得られます。

これは、現在、どのタイプのワーカーも使用せずに私の SSE がどのように機能しているかです。

同じセットアップを実行したいと思います。ただし、JavaScript の SharedWorker 内で実行して、ユーザーごとに複数の SSE を排除したいと考えています。

SharedWorker の実装に苦労しています。これが私がこれまでに試したことです

というファイルを作成し、worker.jsこのコードを追加しました

次に、メッセージにリストしたいページにこのコードがあります

ここで何が欠けていますか?

私は何を間違っていますか?

実装を修正するにはどうすればよいですか?

編集済み

以下の@Bergiからのコメントに基づいて、コネクタにメッセージを投稿していない実装の更新バージョンを次に示します。コードで何が起こっているのかを理解するために、コードにコメントを追加しました。

ランディング ページで、つまりindex.php、このように SharedWorker に接続します

これは私のworker1.jsファイルに含まれているコードです

ここに私の別のバージョンがありますworker1.js

0 投票する
1 に答える
339 参照

javascript - ShardWorker が Firefox ではなく Google Chrome で実行される理由

ついに、Shared Worker で実行中の Server-Sent Event SSE を実装しました。この実装により、サーバー上で実行されるスクリプトの総数をユーザーごとに 1 つに制限することができました。

ただし、まだいくつかの問題があります。

  1. SharedWorkerFireFox ではまったく動作しませんが、Google Chrome では動作します。私はFirefox v40.0を使用しています。コンソールにエラーは表示されません。コンソールに SSL 証明書に関する警告が表示されますが、エラーは表示されません。FireFoxコンソールからの警告は次のとおりです

このサイトは SHA-1 証明書を使用しています。SHA-1 よりも強力なハッシュ関数を使用する署名アルゴリズムで証明書を使用することをお勧めします。[詳細]

  1. ShardWorkerしばらくアイドルタイムを過ぎると動作しなくなるようです。スクリプトは共有ワーカーなしでファイルを動作させるため、これは PHP スクリプトの問題ではありません。Chrome v44.0 でこの問題が発生しています。シャードワーカーを再開するには、ページをリロードする必要があります。

ShardWorker が停止する原因を特定するにはどうすればよいですか? SharedWorderFireFox で実行されないのはなぜですか?

これが私の実装です

これは、ハットが呼び出すコードです。SharedWorker

ここにコードがありますworker.js

0 投票する
1 に答える
1003 参照

javascript - SharedWorker onConnect イベントに Ports 配列があるのはなぜですか?

私が見たすべての例で、それらはこれに似ています

ポート配列に複数の要素が含まれるインスタンスはありますか? SharedWorker で chrome://inspect を使用して出力するとe

メッセージイベント

SharedWorker を共有して生成されるインスタンスの数に関係なく、長さは常に 1 です。なぜ、配列ではなく単なる MessageEvent ではないのでしょうか? 配列であるためには、どのようなユースケースがありますか?