इसकी बात यह है कि आज उपयोग किए जाने वाले वेबस्केट्स के 2 मुख्य प्रोटोकॉल संस्करण हैं। पुराना संस्करण जो [0x00][message][0xFF]
प्रोटोकॉल का उपयोग करता है, और फिर Hybi स्वरूपित पैकेट का उपयोग कर नया संस्करण है ।
पुराने प्रोटोकॉल संस्करण का उपयोग ओपेरा और iPod / iPad / iPhones द्वारा किया जाता है, इसलिए यह वास्तव में महत्वपूर्ण है कि WebSockets सर्वर में पिछड़े संगतता को लागू किया जाता है। पुराने प्रोटोकॉल का उपयोग करने वाले इन ब्राउज़रों के साथ, मुझे पता चला कि पेज को रीफ्रेश करना, या पेज से दूर नेविगेट करना या ब्राउज़र को बंद करना, ब्राउज़र में सभी परिणाम स्वतः कनेक्शन बंद कर देते हैं। महान!!
हालांकि नए प्रोटोकॉल संस्करण (जैसे फ़ायरफ़ॉक्स, क्रोम और अंततः IE10) का उपयोग करने वाले ब्राउज़रों के साथ, केवल ब्राउज़र को बंद करने से ब्राउज़र स्वतः कनेक्शन बंद कर देगा। यह कहना है, यदि आप पृष्ठ को ताज़ा करते हैं, या पृष्ठ से दूर जाते हैं, तो ब्राउज़र स्वचालित रूप से कनेक्शन बंद नहीं करता है। हालांकि, ब्राउज़र क्या करता है, पहले बाइट (प्रोटो पहचान) 0x88
(बेहतर डेटा फ्रेम के रूप में जाना जाता है ) के साथ सर्वर पर एक हाइबी पैकेट भेजा जाता है। एक बार जब सर्वर इस पैकेट को प्राप्त कर लेता है तो यह जबरदस्ती कनेक्शन को बंद कर सकता है, यदि आप ऐसा चुनते हैं।
onclose
घटना को अप्रत्याशित रूप से ट्रिगर किया जा सकता है, या शायद उद्देश्य पर, क्योंकि उपयोगकर्ता नेवीगेट्स / पृष्ठ को फिर से लोड किया गया है। मैंने एक प्रश्न पोस्ट किया है जिसमें पूछा गया है कि अपेक्षित व्यवहार क्या होना चाहिए, किस ब्राउज़र में यह सही है और हम ऑटो-पुन: कनेक्ट कैसे लागू करते हैं।