HTML5サーバーセントイベント(SSE)でリアルタイムデータを受信します。
サーバーセントイベント(SSE)は、HTML5が提供する軽量ソリューションで、リアルタイムの更新をブラウザにプッシュします。株式市場、通知、その他のシナリオに適した長いHTTP接続を介した一方向通信を実現します。それを使用するとき、eventsourceインスタンスを作成し、メッセージを聞きます:const eventsource = new Eventsource( '/stream'); eventsource.onmessage = function(event){console.log( '受信メッセージ:'、event.data); };サーバーは、コンテンツタイプをテキスト/イベントストリームに設定し、接続を開いたままにし、データの出力:コンテンツ\ n \ nを形式で出力する必要があります。一般的な考慮事項は次のとおりです。1。クロスドメインの問題を解決するようにCORを構成します。 2。自動再接続を達成するための再試行時間を制御します。 3.イベントの使用:カスタムイベントタイプを定義します。 4.リソースの漏れを防ぐために、接続タイムアウトを管理します。 WebSocketと比較して、SSEはよりシンプルで使いやすく、HTTPプロトコルをサポートしてファイアウォールに浸透しますが、単方向の通信のみであり、互換性がわずかに低いです。頻繁に相互作用することなく、リアルタイムのプッシュシナリオに適しています。
Web開発では、サーバーからブラウザにリアルタイムの更新をプッシュする必要がある場合、HTML5は軽量ソリューションであるサーバーセントイベント(SSE)を提供します。 WebSocketと比較して、実装がよりシンプルで簡単であり、特にサーバーのみがクライアントに通信する必要があるシナリオに適しています。

サーバーセントイベントとは何ですか?
サーバーセントイベントはHTML5の一部であり、サーバーがHTTP Long接続を介してデータをブラウザにプッシュできるようにします。従来のポーリング方法とは異なり、SSEは接続を確立した後は開いたままになり、サーバーは在庫の見積もり、リアルタイム通知、チャットメッセージなど、いつでも新しいデータを送信できます。

その基本的な使用法は、 EventSource
インスタンスを作成し、サーバー側のURLを指すことです。
const eventsource = new Eventsource( '/stream'); eventsource.onmessage = function(event){ console.log( '受信メッセージ:'、event.data); };
サーバーが引き続きデータを送信している限り、クライアントはそれを受信し続けることができます。

サーバー側にSSEサポートを設定する方法は?
バックエンド言語が異なりますが、実装方法は異なりますが、コアポイントは同じです。接続を開いたままにして、SSE形式でコンテンツを出力します。
node.js Expressを例として取ります:
app.get( '/stream'、(req、res)=> { res.setheader( 'content-type'、 'text/event-stream'); Res.Setheader( 'Cache-Control'、 'No-Cache'); // SEMSENT DATA datasetinterval(()=> { res.write( `data:$ {new date()} \ n \ n`); }、1000); });
キーポイント:
- 正しい応答ヘッダー、特に
text/event-stream
を設定します - 応答が早すぎないで、接続を開いたままにしないでください
- データ形式は
data: 内容\n\n
、および2つのニューラインはメッセージの終了を示しています
Python(Flask)、PHP、またはJava Spring Bootなどの他の言語も同様に実装できます。
よくある質問やメモ
1。クロスドメインの問題 フロントエンドとバックエンドが同じEventSource
名の下にない場合、CORSを設定する必要があります。
Access-Control-Allow-Origin: *
または、特定のドメイン名を指定します。
2。自動再接続メカニズム 接続が中断されると、ブラウザは自動的に再接続しようとし、デフォルトの待機時間は3秒です。サーバー側のこの間隔を制御できます。
再試行:5000
3。カスタムイベントタイプ デフォルトのonmessage
に加えて、他のイベント名を定義することもできます。
イベント:更新 データ:{"Type": "News"、 "Content": "新しいニュースが来ている"}
フロントエンドモニタリング:
eventsource.addeventlistener( 'update'、function(event){ console.log( 'update receece:'、event.data); });
4。接続タイムアウトとリソースリリース 接続を無期限に吊るさないように注意してください。サーバーには、クライアントが切断され、メモリの漏れを避けるためにリソースを時間内にリリースするかどうかを検出するメカニズムが必要です。
Websocketの代わりにSSEをいつ使用する必要がありますか?
WebSocketはより強力であり、双方向通信をサポートしますが、複雑さも高くなっています。クライアントに情報をプッシュするためにサーバーのみが必要であり、頻繁なインタラクションを必要としない場合、SSEはより良い選択です。
利点は次のとおりです。
- 開発プロセスを簡素化し、フロントエンドとバックエンドの両方を簡単に実装できます
- 自動再接続をサポートします
- 標準のHTTPプロトコルを使用して、ファイアウォールに浸透しやすくすることができます
短所も明らかです。
- サーバーからクライアントへの片道通信のみがサポートされています
- ブラウザの互換性はわずかに貧弱です(つまり、EDGEの古いバージョンと古いバージョンはサポートされていません)
基本的にそれだけです。 SSEは複雑ではありませんが、実際の展開では、接続管理、エラー処理、パフォーマンスの最適化に注意を払う必要があります。シンプルなリアルタイム通知システムを作成したい場合、SSEは軽量で実用的な選択です。
以上がHTML5サーバーセントイベント(SSE)でリアルタイムデータを受信します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

HTML5、CSS、およびJavaScriptは、セマンティックタグ、妥当な読み込み順序、デカップリング設計と効率的に組み合わせる必要があります。 1. SEOやバリアのないアクセスを助長する構造の明確性と保守性の向上など、HTML5セマンティックタグを使用します。 2。CSSを配置し、外部ファイルを使用し、モジュールごとに分割して、インラインスタイルと遅延荷重問題を回避する必要があります。 3. JavaScriptは、前に導入され、Deferまたは非同期を使用して非同期にロードすることをお勧めします。 4. 3つの間の強い依存性を減らし、データ - *属性とクラス名制御ステータスを介して動作を促進し、統一された命名仕様を介してコラボレーション効率を改善します。これらの方法は、ページのパフォーマンスを効果的に最適化し、チームと協力することができます。

レイアウトに適したブロックレベルの要素です。これは、テキストコンテンツのラッピングに適したインライン要素です。 1.ラインのみを占有し、幅、高さ、マージンを設定できます。これは、構造レイアウトでよく使用されます。 2.ラインブレークなし、サイズはコンテンツによって決定され、ローカルテキストスタイルまたは動的操作に適しています。 3.選択するときは、コンテンツに独立したスペースが必要かどうかに基づいて判断する必要があります。 4.ネストすることはできず、レイアウトには適していません。 5。構造的な明確さとアクセシビリティを改善するために、セマンティックラベルの使用が優先されます。

MSE(MediaSourceExtensions)はW3C標準の一部であり、JavaScriptがメディアストリームを動的に構築できるため、高度なビデオ再生機能を可能にします。 MediaSourceを介してメディアソースを管理し、SourceBufferのデータを保存し、タイマーを介したバッファリング時間範囲を表し、ブラウザがビデオクリップを動的にロードおよびデコードできるようにします。 MSEを使用するプロセスには以下が含まれます。 sthingそれを要素にバインドします。 source SourceBufferを追加して、特定の形式でデータを受信します。 fetch()を介してセグメント化されたデータを取得し、バッファーに追加します。一般的な注意事項には以下が含まれます。 ②タイムスタンプペア

HTML5introducednewinputtypesthatenhanceformfunctionalityanduserexperiencebyimprovingvalidation,UI,andmobilekeyboardlayouts.1.emailvalidatesemailaddressesandsupportsmultipleentries.2.urlchecksforvalidwebaddressesandtriggersURL-optimizedkeyboards.3.num

ユーザーの現在の場所を取得するには、HTML5 Geolocationapiを使用してください。このAPIは、ユーザーの承認後の緯度や経度などの情報を提供します。コアメソッドはgetCurrentPosition()です。これには、成功したコールバックとエラーコールバックを処理する必要があります。同時に、HTTPSの前提条件、ユーザー承認メカニズム、エラーコード処理に注意してください。 call getCurrentPositionを呼び出してポジションを一度取得すると、エラーコールバックが失敗した場合にトリガーされます。 culresユーザーはそれを承認する必要があります。そうしないと、取得できず、プロンプトが表示されなくなる場合があります。 ererエラー処理は、拒否、タイムアウト、場所を利用できないなどを区別する必要があります。 hightecision Hightision、Set Timeout Timeなどを有効にし、3番目のパラメーターを介して構成できます。オンライン環境はHTTPSを使用する必要があります。それ以外の場合は、ブラウザによって制限される場合があります。

HTML5のFormData APIを使用してフォームデータを送信する方が便利です。 1.名前属性を持つフォームフィールドを自動的に収集したり、データを手動で追加したりできます。 2.ファイルのアップロードに適したMultiPart/Form-Data形式での送信をFetchまたはXmlhttpRequestを介してサポートします。 3.ファイルを処理する場合、FormDataにファイルを追加してリクエストを送信する必要があります。 4.同じ名前のフィールドが上書きされ、JSON変換とネスト構造を処理する必要はないことに注意してください。

HTML5タグは、Webページの進行状況バーを直接実装できます。 1.基本的な使用法は、30%の進捗状況を表示するなど、値と最大属性を設定することです。 2。進捗が不明な場合、値は省略し、最大のみを設定できます。これは不確実な状態を意味します。 3. CSSを介してスタイルをカスタマイズでき、ブラウザの互換性を処理する必要があります。 4.ファイルのアップロード、フォームの進捗、ゲームの読み込みなどのシナリオでよく使用されます。 5.タスクが完了したときに使用しないように注意してください。IEの古いバージョンの互換性の問題を考慮してください。

AsyncとDeferの違いは、スクリプトの実行タイミングです。 Asyncを使用すると、実行命令を保証することなく、ダウンロード後すぐにスクリプトを並行してダウンロードし、実行することができます。 deferは、HTML解析が完了した後に順番にスクリプトを実行します。どちらもHTML解析をブロックしないでください。 ASYNCの使用は、コードの分析などのスタンドアロンスクリプトに適しています。 Deferは、DOMにアクセスするか、他のスクリプトに依存する必要があるシナリオに適しています。
