ホームページ ウェブフロントエンド H5 チュートリアル HTML5 データプッシュ SSE 原理とアプリケーション開発の詳細な図解説明

HTML5 データプッシュ SSE 原理とアプリケーション開発の詳細な図解説明

Mar 08, 2017 pm 03:23 PM

JavaScriptは動作を表現し、CSSは見た目を表現します。通常、HTMLはデータを更新する必要がある場合、構造を更新する必要はありません。データに対する需要により、データ プルおよびデータ プッシュ テクノロジーの出現が促進されました。

SSE は、サーバーが新しいデータをクライアントにプッシュ (データ プッシュと呼ばれます) できるようにする HTML5 テクノロジーです。データ プッシュには、更新なしとデータ プルという 2 つの選択肢があります。

更新なしの解決策:

HTML をロードすると、HTML ページが表示され、ブラウザーは画像、CSS ファイル、JavaScript ファイルなどを要求します。これらはすべて、ブラウザーがキャッシュできる静的ファイルです。ページで、PHP、Ruby、Python、およびユーザーのために HTML を動的に生成するその他の言語などのバックエンド言語が使用されている場合。

データ プル スキーム:

ブラウザは、JavaScript やメタ タグを通じて、ユーザーの行動に基づいて、または一定期間後、または他のトリガー スキームに基づいて、サーバーからデータをリクエストするか完全に更新します。ページ全体をリロードするよう命令する機能。使い慣れた Ajax テクノロジーは、最新のデータを要求するためにのみ使用され、データを受信すると、JavaScript 関数はそれを使用して DOM をローカルに更新します。データ取得の本質: 新しいデータのみを取得し、ページの影響を受ける部分のみを更新します。

上記のいずれもデータ プッシュではありません。データ プッシュは静的ファイルではなく、サーバーが新しいデータを送信するクライアントを選択するときにブラウザーがデータを更新するリクエストを開始することも伴いません。

データ ソースに新しいデータがある場合、サーバーは、クライアントのリクエストを待たずに、そのデータを 1 つ以上のクライアントにすぐに送信できます。これらの新しいデータは、ニュース速報、最新の株式、またはオンラインの友人とのチャットであ​​る可能性があります。情報、新しい天気予報、戦略ゲームの次のステップなど。

SSE は、頻繁な更新、低遅延、サーバーからクライアントへのデータに適しています。 WebSocket との違い:

1) 利便性、新しいコンポーネントを追加する必要がなく、使い慣れたバックエンド言語やフレームワークで引き続き使用でき、新しい IP やフレームワークの取得について心配する必要はありません。新しい仮想マシンの新しいポート番号。

2) サーバー側のシンプルさ。 SSE は既存の HTTP/HTTPS プロトコルで動作するため、既存のプロキシ サーバーや認証テクノロジで直接実行できます。

SSE と比較した WebSocket の最大の利点は、WebSocket が双方向通信であることです。つまり、サーバーからのデータの送信は、サーバーからのデータの受信と同じくらい簡単ですが、SSE は通常、WebSocket を介してクライアントからサーバーにデータを送信します。独立した Ajax リクエストであるため、WebSocket ではなく Ajax を使用するとオーバーヘッドが追加されます。したがって、1 秒に 1 回以上の速度でデータをサーバーに送信する必要がある場合は、WebSocket を使用する必要があります。

具体的なコードは次のとおりです:

html コード

<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>basic SSE test</title>
    </head>
    <body>
        <pre id = "x">initializting...
<script> var es = new EventSource("basic_sse.php"); es.addEventListener("message",function(e){ //e.data document.getElementById("x").innerHTML += "\n"+e.data; },false);//使用false表示在冒泡阶段处理事件,而不是捕获阶段。 </script>
ログイン後にコピー

潜在的な JavaScript インジェクション攻撃を防ぐために、サーバー側のデータを使用する前に確認することが最善であることに注意してください。

phpコード

<?php
    header(&#39;Content-Type: text/event-stream&#39;);
    header(&#39;Cache-Control: no-cache&#39;);
    $time = date(&#39;r&#39;);
    echo "data: The server time is: {$time}\n\n";
    flush();
?>
ログイン後にコピー

「Content-Type: text/event-stream」はSSE用に特別に設計されたMIMEタイプであり、

エフェクトのスクリーンショット

データプッシュが間違っている場合を選択すると

、まず静的な状況を考慮し、ユーザーがページを開くたびに、サーバーの電話情報がユーザーに返される可能性があります。静的な HTML ファイルや画像をディスクからロードするなど、非常に単純なものもあれば、多くのデータベースに接続するバックグラウンド言語を実行するなど複雑なものもあります。ここでの重要な点は、必要な情報が返されるとソケットが閉じられ、各 HTTP リクエストがこれらの比較的存続期間の短いソケット接続の 1 つを開き、サーバー上で制限されているリソースは、目的のタスクを完了するたびに回復されるということです。リサイクル用に。

それでは、データプッシュを比較してみましょう。リクエストは決して完了せず、常に大量の情報を送信するため、ソケットは開いたままになります。明らかに、リソースは限られているため、同時に SSE 接続の数には制限があります。

最新のアプリケーションに電話サービス サポートを提供している状況を想像してください。10 人のコールセンターの従業員が 1000 人のユーザーに対応しており、オペレーターの 1 人が電話に出て電話を切りました。新しい顧客からの通話は、いずれかのオペレーターが電話を切るまでキューに入れられます。これは、一般的なネットワーク サービス パターンです。

しかし、今、お客様から電話があり、「今は問題ないが、数時間以内に製品を使用するので、問題が発生した場合はすぐに返信してほしい」と言われました。この顧客はオペレーターと数時間電話を続けることになり、コールセンターのサービス リソースの 10% が無駄になります。そのような顧客が 10 人いる場合、残りの 990 人の顧客は電話をかけることができません。これがデータプッシュモデルです。

もちろん、これは必ずしも悪いことではありません。この顧客が午後を通じて数秒ごとに問題を抱えている場合、この状況で電話を開いたままにしておくと、サービス リソースの 10% が無駄になることはありません。質問ごとに新しい呼び出し (データのプルなど) が必要になるため、オペレーターは顧客の身元確認とアカウントの取得に余分な時間を費やす必要があり、サービスの効率が低下します。通常、電話を続けることで顧客の満足度が高まるだけでなく、コールセンターの生産性も向上します。これはデータ プッシュに最適なシナリオです。


以上がHTML5 データプッシュ SSE 原理とアプリケーション開発の詳細な図解説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

HTMLの表の境界線 HTMLの表の境界線 Sep 04, 2024 pm 04:49 PM

HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

HTML のネストされたテーブル HTML のネストされたテーブル Sep 04, 2024 pm 04:49 PM

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML 左マージン HTML 左マージン Sep 04, 2024 pm 04:48 PM

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML入力プレースホルダー HTML入力プレースホルダー Sep 04, 2024 pm 04:54 PM

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML 内のテキストの移動 HTML 内のテキストの移動 Sep 04, 2024 pm 04:45 PM

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML 順序付きリスト HTML 順序付きリスト Sep 04, 2024 pm 04:43 PM

HTML 順序付きリストのガイド。ここでは、HTML 順序付きリストと型の導入とその例についても説明します。

HTML の onclick ボタン HTML の onclick ボタン Sep 04, 2024 pm 04:49 PM

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。

See all articles