HTML5サーバープッシュイベントの説明
この記事では、HTML5 のサーバー送信イベント (Server-sent Events) について簡単に説明します。興味のある方は学習してください。
サーバー送信イベント (Server-sent Events) は、以下をベースにしています。 WebSocket プロトコル サーバーがイベントとデータをクライアントに送信する一方向通信。現在、Internet Explorer を除くすべての主要なブラウザがサーバー送信イベントをサポートしています。 2333...
WebSocket プロトコルは、HTTP プロトコルに次ぐサーバーとクライアントの通信プロトコルです。クライアントがサーバーに応答を要求する HTTP の単純な一方向通信モードとは異なり、サーバーとサーバー間の双方向通信をサポートします。クライアント。
サーバー送信イベントの使用
サーバー送信イベント (以下、SSE) をサーバー => クライアント通信方式として使用する場合、クライアントは対応するサービス アドレスと応答メソッド、およびサーバーを必要とします。対応するデータ送信メソッドが必要です。早速、コードに進みましょう。
クライアントサイド JS コード
次の JS コードを H5 ページに追加する必要があります:
<script> if (typeof (EventSource) !== "undefined") { //推送服务接口地址 var eventSource = new EventSource("http://localhost:2242/webservice/ServerSent/SentNews"); //当通往服务器的连接被打开 eventSource.onopen = function () { console.log("连接打开..."); } //当错误发生 eventSource.onerror= function (e) { console.log(e); }; //当接收到消息,此事件为默认事件 eventSource.onmessage = function (event) { console.log("onmessage..."); eventSource.close()//关闭SSE链接 }; //服务器推送sentMessage事件 eventSource.addEventListener('sentMessage', function (event) { var data = eval('('+event.data+')');//服务器端推送的数据,eval装换Json对象 var origin = event.origin;//服务器 URL 的域名部分,即协议、域名和端口,表示消息的来源。 var lastEventId = event.lastEventId;////数据的编号,由服务器端发送。如果没有编号,这个属性为空。 //此处根据需求编写业务逻辑 console.log(data); }, false); } else { //浏览器不支持server-sent events 所有主流浏览器均支持服务器发送事件,除了 Internet Explorer。 document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events..."; } </script>
サーバー
サーバーはどのデータ形式を返す必要がありますか?クライアントにはどのような対応をすればよいのでしょうか?まずは .Net の例を見てみましょう
/// <summary> /// 推送消息 /// </summary> /// <returns></returns> [HttpGet] public HttpResponseMessage SentNews() { HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK); try { //response.Headers.Add("Access-Control-Allow-Origin", "*");//如需要跨域可配置 string data_str = “推送至客户端的数据”;//当然可以是json字符串格式 string even = "", data = ""; if (!string.IsNullOrWhiteSpace(data_str)) { even = "event:sentMessage\n"; data = "data:" + data_str + "\n\n"; } string retry = "retry:" + 1000 + "\n";//连接断开后重连时间(毫秒),其实可以理解为轮询时间 2333... byte[] array = Encoding.UTF8.GetBytes(even + data + retry); Stream stream_result = new MemoryStream(array); response.Content = new StreamContent(stream_result); response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/event-stream");//此处一定要配置 response.Headers.CacheControl = new CacheControlHeaderValue(); response.Headers.CacheControl.NoCache = false; } catch (Exception ex) { LogHelper.WriteWebLog(ex); } return response; }
上記のコードを読んだ後、応答メソッドは HTTPResponse 応答であることに変わりはありませんが、常にいくつかの小さな要件があります。
応答ヘッダー "Content - Type」を「text/event-stream」に設定します
応答データ形式では、上記のコードの「data:」、「event:」、および「retry:」タグにも注意する必要があります:
1.event: を示しますこの行が宣言するために使用されるイベントのタイプ。ブラウザがデータを受信すると、対応するタイプのイベントが生成されます。
2.data: 行にデータが含まれていることを示します。データで始まる行は複数回出現する場合があります。これらすべての行はそのイベントのデータです。
3.retry: この行は、接続が切断された後、再接続するまでのブラウザの待ち時間を宣言するために使用されることを示します。
4.id: この行がイベントを宣言するために使用する識別子 (つまり、データの番号) を示しますが、一般的には使用されません。
上記はサーバー送信イベントの簡単なアプリケーションです。これ以上効果は示しません。興味がある場合は、自分で操作して効果を実現できます。
以上がHTML5サーバープッシュイベントの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











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

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

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

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

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

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

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