Sind beim Erlernen von EventSource-Objekten in Javascript Probleme aufgetreten? ?

WBOY
Freigeben: 2016-09-19 09:16:30
Original
1470 Leute haben es durchsucht

<code>javascript:
var e = new EventSource('test.php');
e.onopen = function(){
  console.log('你创建了一个服务器长连接!');
};

e.onmessage = function(event){
  var e = event || window.event;
  console.log('接受到来自服务器的消息: ' + event.data);
}

e.onerror = function(event){
  console.log('链接发生错误,当前链接状态: ' +  event.readyState);
}

PHP:
header('content-type:text/event-stream');
header('cache-control:no-cache');
while (true)
 {
   echo 'hello world';
   ob_flush();
   flush();
   sleep(1);
 }
 </code>
Nach dem Login kopieren
Nach dem Login kopieren

Öffnen Sie die angeforderte event_source.php im Browser, um sie anzuzeigen, wie unten gezeigt:

Sind beim Erlernen von EventSource-Objekten in Javascript Probleme aufgetreten? ?

Ich verstehe nicht, was für ein Antworttyp der EventStream hier ist..., warum die onmessage-Methode nie irgendwelche Daten empfängt (weil unterwegs keine Informationen unter der EventStream-Spalte empfangen werden...), was los ist An? ? ? Was ich im Hintergrund ausgebe, ist eine Zeichenfolge. Muss ich eine Typkonvertierung für die Zeichenfolge durchführen? ?

Antwortinhalt:

<code>javascript:
var e = new EventSource('test.php');
e.onopen = function(){
  console.log('你创建了一个服务器长连接!');
};

e.onmessage = function(event){
  var e = event || window.event;
  console.log('接受到来自服务器的消息: ' + event.data);
}

e.onerror = function(event){
  console.log('链接发生错误,当前链接状态: ' +  event.readyState);
}

PHP:
header('content-type:text/event-stream');
header('cache-control:no-cache');
while (true)
 {
   echo 'hello world';
   ob_flush();
   flush();
   sleep(1);
 }
 </code>
Nach dem Login kopieren
Nach dem Login kopieren

Öffnen Sie die angeforderte event_source.php im Browser, um sie anzuzeigen, wie unten gezeigt:

Sind beim Erlernen von EventSource-Objekten in Javascript Probleme aufgetreten? ?

Ich verstehe nicht, was für ein Antworttyp der EventStream hier ist..., warum die onmessage-Methode nie irgendwelche Daten empfängt (weil unterwegs keine Informationen unter der EventStream-Spalte empfangen werden...), was los ist An? ? ? Was ich im Hintergrund ausgebe, ist eine Zeichenfolge. Muss ich eine Typkonvertierung für die Zeichenfolge durchführen? ?

Weil das Format der Textausgabe in Ihrem Echo falsch ist.

Der Inhalt jedes Echos muss im folgenden Format vorliegen

<code>field: value
</code>
Nach dem Login kopieren

Feld kann eines von Daten, Ereignis, ID, Wiederholung sein
Wert ist die Datennutzlast

Ihr Beispiel hier sollte in

geändert werden
<code>echo "data: hello world\n\n";
</code>
Nach dem Login kopieren

Referenz:

  • https://www.mxgw.info/t/serve...

  • http://javascript.ruanyifeng....

  • https://developer.mozilla.org...


Es gibt keine PHP-Kennung in PHP?
Wenn Sie im Browser auf die PHP-Datei zugreifen, erhält js definitiv keine Nachricht. Um einen HTML-Code zu erstellen, greifen Sie auf den HTML-Code im Browser zu.

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage