2012-11-03 11 views
10

में onmessage विधि के साथ एचटीएमएल 5 EventSource घटना देख सकते हैं मैं एक छोटे से उदाहरणमैं नहीं क्रोम

क्लाइंट साइड के साथ EventSource वस्तु इस्तेमाल करने की कोशिश, मैं स्क्रिप्ट के साथ यह पेज है:

<!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> 

स्क्रिप्ट कॉल घटना स्रोत सर्वर पर .php।

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

जब मैं फ़ायरफ़ॉक्स, विधि "onmessage" अच्छी तरह से कहा जाता है पर इस विन्यास की कोशिश, लेकिन नहीं क्रोम के साथ: यहाँ घटना source.php है। जब मैं "आतंक" विधि डालता हूं, ऐसा लगता है कि इसे कहा जाता है लेकिन मुझे त्रुटि कारण दिखाई नहीं दे रहा है।

मुझे क्या करना चाहिए?

+0

क्रोम संस्करण 22 में यह कोशिश की, यह काम किया। – igorw

+0

मेरे सिस्टम पर नहीं, मैं उबंटू 12.04 पर चलता हूं, मैंने उबंटू 12.04, क्रोमियम 20 और क्रोम 22 के साथ प्रयास किया। इसके अलावा, ऑनमेसेज और आतंक को फ़ायरफ़ॉक्स पर दोनों कहा जाता है, लेकिन इवेंट डेटा सही ढंग से प्रदर्शित होते हैं ... – mika34

+0

ठीक काम करता है क्रोम 32.0.1700.102 मीटर – Kamil

उत्तर

0

onmessage में आप वांछित ऑब्जेक्ट प्रॉपर्टी को कॉल कर रहे हैं, तो आप onerror में ऐसा क्यों नहीं करते?
मुझे लगता है कि अपने onerror इस तरह दिखना चाहिए:

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

स्पष्टीकरण:https://developer.mozilla.org/en-US/docs/Server-sent_events/Using_server-sent_events - इस लिंक कहते हैं, "जब समस्याओं (...) होते हैं, एक त्रुटि घटना उत्पन्न होता है।"

तो जब आप ErrorEvent संरचना के बारे में सीखना चाहिए निपटने कस्टम त्रुटि :) यह इस प्रकार है:

  1. त्रुटिआर्थ। संदेश (केवल पढ़ने के लिए) क्या एक DOMString जिसमें समस्या का वर्णन करने वाले मानव-पठनीय त्रुटि संदेश है।
  2. त्रुटिआर्थ। फ़ाइल नाम (केवल पढ़ने के लिए) क्या एक DOMString में स्क्रिप्ट फ़ाइल का नाम है जिसमें त्रुटि हुई।
  3. त्रुटिआर्थ। लिनेनो (केवल पढ़ने के लिए) एक पूर्णांक है जिसमें त्रुटि स्क्रिप्ट फ़ाइल की संख्या है जिस पर त्रुटि हुई।
  4. त्रुटिआर्थ। कॉलम (केवल पढ़ने के लिए) एक पूर्णांक है जिसमें स्क्रिप्ट फ़ाइल की कॉलम संख्या है जिसमें त्रुटि हुई है।
  5. त्रुटिआर्थ। त्रुटि (केवल पढ़ने के लिए) एक जावास्क्रिप्ट ऑब्जेक्ट है जो घटना से संबंधित है।

अधिक जानकारी और स्रोत: https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent

+0

कृपया टिप्पणी करें जब आप डाउनवोट करते हैं, हर कोई सीख रहा है, हमेशा .... :) –

0

ग्राहक

<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> 

सर्वर

<?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(); 
    ?> 
संबंधित मुद्दे