2012-11-03 12 views
10

yılında onMessage yöntemi ile HTML5 EventSource olay göremiyorum, Senaryonun bu sayfayı vardır:ben biraz örnek</p> <p>İstemci tarafı ile EventSource nesnesini kullanmayı deneyin Chrome

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="UTF-8" /> 
     <title>Welcome!</title> 
    </head> 
    <body> 
     <div id="result"></div> 
     <script type="text/javascript"> 
     var sse = new EventSource('event-source.php'); 

     sse.onmessage = function(event) { 
      console.log(event.data); 
      document.getElementById("result").innerHTML+=event.data + "<br>"; 
     } 

     sse.onerror = function(event) { 
     console.log(event); 
     } 

     </script> 
    </body> 
</html> 

komut olay kaynaklı aramalar .php sunucusunda.

<?php 
header('Content-type: text/event-stream'); 
echo 'data: '.time().PHP_EOL; 

Ben de denir "onMessage" Firefox, yöntem bu yapılandırmayı deneyin

ama Chrome ile: Burada olay source.php olduğunu. "Onerror" yöntemini koyduğumda, öyle görünüyor ama hata sebebini göremiyorum.

Ne yapmalıyım?

+0

krom sürümü 22'de denedim

<script> if(typeof(EventSource) !== "undefined") { var source = new EventSource("/html/demo_sse.php"); source.onopen = function() { document.getElementById("myH1").innerHTML = "Getting server updates"; }; source.onmessage = function(event) { document.getElementById("myDIV").innerHTML += event.data + "<br>"; }; } else { document.getElementById("myDIV").innerHTML = "Sorry, your browser does not support server-sent events..."; } </script> 

SUNUCU, işe yaradı. – igorw

+0

Sistemimde değil, Ubuntu 12.04 üzerinde çalışıyorum, Ubuntu 12.04, Chromium 20 ve Chrome 22. ile denedim. Ayrıca, onmessage et onerror, Firefox'ta hem çağrılır, ancak Olay verileri doğru görüntülenir ... – mika34

+0

Chrome 32.0.1700.102 m – Kamil

cevap

0

onmessage içinde aranan nesne özelliği çağırıyorsunuz, neden onerror'da aynısını yapmıyorsunuz?
Ben senin onerror gibi görünmelidir düşünüyorum:

sse.onerror = function(event) { 
     console.log(event.message); 
    } 

Açıklama:https://developer.mozilla.org/en-US/docs/Server-sent_events/Using_server-sent_events - bu bağlantıyı "sorunları (...) oluştuğunda, bir hata olayı oluşturulur." Diyor

Özel hata işleme sırasında, ErrorEvent yapısı hakkında bilgi edinmeniz gerekir :) Bu şöyle gider:

  1. ErrorEvent. message (Salt okunur) Sorunu açıklayan bir insan tarafından okunabilir hata iletisini içeren bir DOMString var.
  2. ErrorEvent. filename (Salt okunur) Hatanın oluştuğu komut dosyasının adını içeren bir DOMString var.
  3. ErrorEvent. lineno (Salt okunur) Hatanın oluştuğu komut dosyasının numarasını içeren bir tamsayı var.
  4. ErrorEvent. column (Salt okunur) Hatanın oluştuğu komut dosyasının numarasını içeren bir tamsayı var.
  5. ErrorEvent. hata (Salt okunur) Bu, etkinlikle ilgili bir JavaScript Nesnesidir.

fazla bilgi ve kaynak: https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent

+0

Lütfen reddettiğinizde yorum yapın, herkes öğreniyor, her zaman .... :) –

0

MÜŞTERİ

<?php 
    header('Content-Type: text/event-stream'); 
    header('Cache-Control: no-cache'); 

    $time = date('r'); 
    echo "data: The server time is: {$time}\n\n"; 
    flush(); 
    ?> 
İlgili konular