問題タブ [server-sent-events]

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 投票する
1 に答える
574 参照

php - Server-Sent Events HTML 5 を使用して画像ギャラリーを作成する方法

Web サーバーのフォルダーから画像をローテーションする全画面画像プレイリストを作成したいと考えています。

新しい画像を挿入すると、ブラウザは自動的に新しい画像を回転用に配置します。同じ場合、画像を削除すると、画像が回転から削除されます。

このようなものを作成するために、どのテクノロジーまたはプラグインを使用できますか?

ご覧いただきありがとうございます。

0 投票する
3 に答える
18088 参照

javascript - JavaScript EventSource SSE がブラウザーで起動しない

HTML5で開発している新しいWebサイトにサーバー側イベントを提供するために、nodejsサーバーを開発しています。

サーバーに telnet で接続すると、正しく動作し、必要な HTTP 応答ヘッダーが送信され、続いて、動作を証明するために現在 2 秒または 3 秒ごとに生成しているイベントのストリームが送信されます。

FireFox、Chrome、Opera の最新バージョンを試してみましたが、EventSource オブジェクトを作成して nodejs サーバーに接続できましたが、onopen、onmessage、onerror などのイベントを生成するブラウザはありません。

ただし、nodejsサーバーを停止してブラウザからの接続を終了すると、すべてのメッセージが突然ディスパッチされ、すべてのイベントが表示されます。その後、ブラウザーはすべて、仕様に従ってサーバーへの再接続を試みます。

私はすべてをウェブサーバーでホストしています。ローカル ファイルでは何も実行されていません。

購入した本を含め、オンラインで見つけられるものはすべて読みましたが、そのような問題は何もありません。何か足りないものはありますか?

サンプル サーバーの実装

サンプルの html ページ

これらの例は基本的なものですが、本やオンラインで見た他のすべてのデモと同じ種類のものです。eventSource は、クライアント接続を終了するかサーバーを終了する場合にのみ機能しているように見えますが、これは SSE ではなくポーリングであり、特に SSE を使用したいと考えています。

興味深いことに、html5rock のthouseなどのデモも、オンラインで使用すると期待どおりに動作しないようです..

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

html - WebAPI と HTML5 SSE

クライアントにプッシュバックできるフィードバックを表示するために部分ビューをカプセル化しようとしていました。

この記事では、HTML5 Server-Sent events (SSE) を使用してデータをプッシュバックする方法を示します。

複数のブラウザー タブを開いてから 1 つを閉じると、ロジックがそれぞれのストリームを ConcurrentQueue から削除しなかったため、例外が発生することに気付きました。以下のようにコードを修正しました

フレームワークの構文が HttpContentHeaders ではなく HttpContent である 2 番目のパラメーターに変更されたため、OnStreamAvailable メンバーも修正する必要がありました。

問題は、クライアントを追加または削除すると、まだ一貫性のない動作が得られることです。つまり、新しいクライアントを初期化しようとするとタイムアウトになります。WinAPI で SSE を使用し、切断されたクライアントを処理するための正しい「メソッドのフレームワーク」のアイデアや例を誰かが持っていますか?

乾杯ティム

0 投票する
3 に答える
4161 参照

node.js - H15 on Heroku SSE リクエスト

Heroku に Node.js アプリケーションがあります。最近、長いクエリを SSE (EventSource) を使用するように切り替えました。私のマシンでは素晴らしく高速に動作しますError H15 (Idle connection)が、GET リクエストを受け取り続けます。H15 の説明によると、1 回のトランザクションで許可される時間が 55 秒を超えました。しかし、私のクエリ全体は 4 ~ 5 秒もかかりません。

さらに、説明を読んだ後、重い作業を開始する前に、クエリにヒットするとすぐに最初のバイト (数値のみ) を返しますが、それでも機能しません。

私の質問は次のとおりです。

  1. このことを続けるために何をする必要がありますか?HTTP ヘッダー パラメーター?クライアントJS側に何か?H15 を回避するにはどうすればよいですか?
  2. Heroku でサポートされていないことをしようとしていますか? EventSource を正常に使用する Heroku の別のアプリがあるので、そうは思いません ( express-eventsource.herokuapp.com、github のソース: https://github.com/TravelingTechGuy/express-eventsource ) 。

いつもありがとうございます。

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

ruby - Cramp(Ruby)およびSSE(HTML5)によるリアルタイム更新

Cramp(Ruby)SSE(HTML5)を使用して、サーバーからリアルタイムで更新を取得するためのサンプルアプリケーションを用意しました。

を介してHTMLにアクセスしているときに次のエラーが発生しますhttp://localhost/sse_time.html

sse_time.html

app /アクション/time_action.rb

どこにline 9ありますかvar source = new EventSource('http://localhost:3000/time');

クロームを打つhttp://localhost:3000/timeと、5秒ごとにエラーなしで時間が表示されます。

http://localhost:3000/timeただし、PHPコードでは、URIをstream.phpinに置き換えても問題なく機能します。sse_time.html

stream.php

ここstream.phpsse_time.html同じ場所に住んでいます。

この問題を解決するために誰かが私を案内してくれませんか?

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

internet-explorer - SignalRがサーバー送信イベントの代わりにIEでForeverFrameを使用するのはなぜですか?

SignalRがサーバー送信イベントの代わりにIEでForeverFrameを使用するのはなぜですか?IEがSSEをサポートしていないためですか、それともForever Frameアプローチほど効果的ではないためですか?

0 投票する
2 に答える
7280 参照

websocket - (WebSocket の代わりに) 双方向のクライアント/サーバー通信に Server-Sent イベントを使用することの欠点

最近、サーバーからのプッシュを行うための WebSocket に代わるはるかに単純な方法として、Server-Sent イベントを見つけました。それらを比較するほとんどの場所 (ここここここなど) では、クライアントとサーバー間の全二重通信が必要ない場合、WebSocket は過剰であり、SSE で十分であると述べています。

私の質問は、クライアントからメッセージを送信するために通常の ajax リクエストを使用し、それらを受信するためにサーバー ストリームを使用して、双方向通信 (チャットなど) が必要な場合に SSE を使用することのマイナス面は何でしょうか? SSE を使用するためにサーバー側でほとんどまたはまったく構成を行う必要がないことを考えると、これははるかに魅力的なオプションのようです。

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

android - Android Firefox で EventSource が自動的に再接続しない

デスクトップ、アンドロイド、iOS で動作する HTML5 アプリを実装しようとしています。このアプリの主な機能は、実行するスクリプトに関するコマンドをサーバーにワイヤレスで送信し、そのサーバーからプッシュされたスクリプトのステータスに関する定期的なメッセージを受信することです。

サーバーは nodejs を実行しており、サーバー送信イベントを使用してプッシュ通知を行うことにしました。ネイティブの Android ブラウザーは SSE をサポートしていないため、Android で Firefox を使用する必要があります。

私の実装はすべて正常に動作します。ノード サーバーはイベントを公開しており、クライアント側の HTML5/javascript は、デスクトップの chrome/firefox/safari、iPod iOS6、および Android 2.2 電話で問題なく動作しています。

ただし、対処する必要がある一般的な状況が 4 つあります。

  • デバイスが Wi-Fi 信号を失う
  • nodejs サーバーのクラッシュ (これが一般的でないことを願っています!)
  • iPod/Android で別のアプリを閲覧しているときにブラウザをバックグラウンドにするなど。
  • ブラウザの実行中に iPod/Android で画面をロックする

次のように、Chrome/Safari はデスクトップと iPod の両方で完全に動作します。サーバーがクラッシュした場合、サイトは自動的に再接続し、サーバーが再起動するとすぐにプッシュされたメッセージを取得します。何らかの理由でブラウザー アプリがバックグラウンドになった場合、バックグラウンドでこれらのメッセージを受信し続けるか、少なくともフォアグラウンドに戻るとすぐに自動的に再接続します。

ただし、Firefox は、デスクトップと Android の両方で、その EventSource 接続を永久に閉じようとします。サーバーのクラッシュ、Firefox アプリのバックグラウンド化、または画面のロックにより、ブラウザーがサーバーへの接続を失うとすぐに、EventSource 接続が強制終了され、再接続が試行されなくなります。もちろん、ページに戻ったときにページをリロードすることもできますが、これは面倒です。特に、電話をポケットに入れる必要があるために画面をロックする必要がある場合は面倒です (このアプリは次の場所で使用する必要があります)。いくつかのトレッキング状況)。

Android Firefoxでページを常にリロードする必要があることを除けば、これに対する解決策を誰かが推奨できますか? 以下は私のダミーの実装で、5 秒ごとに乱数を送信するだけです。

/main/src のサーバー

クライアント

ありがとう!!

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

javascript - HTML5 サーバー送信イベント: 技術的な詳細?

HTML5 の新しいサーバー送信イベントの技術的背景に興味があります。そこで実際に何が起こるのでしょうか?

  • サーバー側で特別な機能は必要ありません。いつものようにデータを送信するだけです。例: html
  • HTTP は依然として要求/応答プロトコルです。私の意見では、新しいコンテンツタイプ「テキスト/イベントストリーム」はそれを変えません

では、この概念は「単純な古い長いポーリング」のカプセル化されたバージョンにすぎませんか? 一方、それはしばしばサーバーへの永続的な双方向接続として説明されます..私の意見では、それは何か違うでしょう. これがhttp上でどのように機能するかを理解したいだけです。

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

php - サーバー送信イベントについて混乱している

sse.phpデータを読み取ってクライアントに送り返すペー​​ジがあります。

N秒ごとに開始することを除いて、うまく機能します。

EventSource が N 秒ごとに再接続し、php スクリプトが何度も何度も開始されることを理解しています。

どの接続が最初の接続で、何が再接続を維持しているのかを判断するにはどうすればよいですか?

次に、読み取りスクリプトを実行する接続とそうでない接続を知ることができます。

WebSocketsでは、一度だけ接続していることを知っているので、データのみを送信します。

SSEで同じものを取得するには?