Heim Web-Frontend H5-Tutorial Detaillierte Einführung in Server-Push-Ereignisse

Detaillierte Einführung in Server-Push-Ereignisse

Jul 26, 2017 pm 06:08 PM
html5 服务器

Vom Server gesendete Ereignisse sind eine unidirektionale Kommunikation, die auf dem WebSocket-Protokoll basiert, bei dem der Server Ereignisse und Daten an den Client sendet. Derzeit unterstützen alle gängigen Browser vom Server gesendete Ereignisse, außer natürlich Internet Explorer. 2333...

Das WebSocket-Protokoll ist nach dem HTTP-Protokoll ein weiteres Server-Client-Kommunikationsprotokoll, bei dem es sich um einen einfachen Client handelt, der eine Serverantwort anfordert, und unterstützt den unidirektionalen Kommunikationsmodus Zwei -Wege-Kommunikation zwischen Server und Client.

Verwendung von vom Server gesendeten Ereignissen

Vom Server gesendete Ereignisse (im Folgenden als SSE bezeichnet) als Server => Für die Client-Kommunikationsmethode muss der Client über die entsprechende Dienstadresse und Antwortmethode verfügen, und der Server muss ohne weiteres über die entsprechende Datensendemethode verfügen. Kommen wir zum Code!

Clientseitiger JS-Code

 H5页面需添加如下JS代码:     <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>
Nach dem Login kopieren

Serverseitig

Welches Datenformat soll der Server zurückgeben? Welche Art von Antwort sollte dem Kunden gegeben werden? Beginnen wir mit einem .Net-Beispiel

     /// <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;
        }
Nach dem Login kopieren

Nachdem Sie den obigen Code gelesen haben, sollten Sie meiner Meinung nach eine Idee haben. Die Antwortmethode ist immer noch HTTPResponse. Aber es gibt immer ein paar kleine Anforderungen:

  • Der Antwortheader „Content-Type“ sollte auf „text/event-stream“ gesetzt sein

Das Antwortdatenformat sollte auch die Tags „data:“, „event:“ und „retry:“ im obigen Code beachten:

  1. Ereignis: Gibt den Ereignistyp an, der von dieser Zeile zur Deklaration verwendet wird. Wenn der Browser Daten empfängt, generiert er Ereignisse des entsprechenden Typs.

  2. Daten: Zeigt an, dass die Zeile Daten enthält. Zeilen, die mit Daten beginnen, können mehrfach vorkommen. Alle diese Zeilen sind Daten für dieses Ereignis.

  3. Wiederholen: Gibt an, dass diese Zeile verwendet wird, um die Wartezeit des Browsers anzugeben, bevor die Verbindung nach dem Trennen der Verbindung wiederhergestellt wird.

  4. id: Gibt die Kennung (d. h. die Nummer der Daten) an, die von dieser Zeile zum Deklarieren des Ereignisses verwendet wird, was nicht häufig verwendet wird.

Das Obige ist eine einfache Anwendung von Vom Server gesendeten Ereignissen. Wenn Sie interessiert sind, können Sie es selbst bedienen die Wirkung!

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Server-Push-Ereignisse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

See all articles