2015-08-25 9 views
7

दिखा रहा है मैं एसएसई पर नया हूं और मैं w3schools tutorial का पालन कर रहा हूं। मैंने उनके उदाहरण में कुछ कोड जोड़ा ताकि मैं देख सकूं कि कनेक्शन कब खोला गया है और जब कुछ त्रुटि होती है।एचटीएमएल 5 सर्वर-प्रेषित घटनाएं आतंकवाद हर 3 सेकंड

<script> 
var source = new EventSource("sse.php");       
source.addEventListener('message', function(e) { 
    console.log("onmessage");   
    document.getElementById("result").innerHTML += event.data + "<br>";  
}, false); 

source.addEventListener('open', function(e) { 
    console.log("onopen"); 
}, false); 

source.addEventListener('error', function(e) { 
    console.log('error '+e.readyState); 
}, false); 

</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(); 
?> 

प्रलेखन कहते हैं जब एक वेब पेज स्वचालित से अपडेट प्राप्त होते हैं कि

सर्वर-भेजा घटना है एक सर्वर। यह से पहले भी संभव था, लेकिन वेब पेज से यह पूछना होगा कि क्या कोई अपडेट उपलब्ध है या नहीं। सर्वर द्वारा भेजे गए ईवेंट के साथ, अपडेट स्वचालित रूप से आते हैं।

लेकिन सांत्वना हमें विपरीत पता चलता है:

enter image description here

क्लाइंट साइड एक नया कनेक्शन अनुरोध कर रहा है, संदेश मिल रहा, एक त्रुटि उत्पन्न हो रही है और कनेक्शन बंद कर दिया है। यह हर 3 सेकंड दोहराया जाता है। ये क्यों हो रहा है?

उत्तर

1

मुझे संदेह है कि आपका सर्वर साइड कार्यान्वयन HTTP कनेक्शन को खुला नहीं रख रहा है। तो यह बार-बार फिर से जुड़ रहा है।

मैं PHP नहीं लिखता लेकिन every example मुझे के अलावा ob_flush() का उपयोग मिला है।

ob_flush(); 
flush(); 

क्या आपने कोशिश की है?

संबंधित मुद्दे