दो संबंधित प्रश्नों है कि और अधिक के ज्ञान की मेरी कमी में निहित किया जा सकता है के लिए बाध्य करने के OnOpen करता है कैसे/ब्राउज़रों पूर्व पार्स यदि जावास्क्रिप्ट:जावास्क्रिप्ट WebSockets - को नियंत्रित प्रारंभिक कनेक्शन/जब
var ws = new WebSocket("ws://ws.my.url.com");
ws.onOpen = function() { ... };
कोई प्रतीत होता है WebSocket
के प्रारंभिककरण को सीधे कॉलबैक में लपेटने से पहले, तो मुझे लगता है कि जैसे ही जावास्क्रिप्ट कोड लोड हो जाता है और कन्स्ट्रक्टर तक पहुंच जाता है, कनेक्शन कनेक्शन बनाया जाता है?
onOpen
संपत्ति ws
से जुड़ी हुई है? क्या दौड़ की स्थिति की कोई संभावना है (यदि किसी कारण से आपके पास सॉकेट की परिभाषा और onOpen
की परिभाषा के बीच कुछ कोड था?) ताकि onOpen
कनेक्शन स्थापित होने से पहले/बाद में अनिश्चित रूप से बाध्य हो (मुझे पता है कि आप वैकल्पिक रूप से वैकल्पिक रूप से ws.readyState
देखें)। इसके लिए पूरक, वेबसाकेट हैंडशेक अवरुद्ध है?
मुझे एहसास है कि इस समय यह एक मसौदा है, संभवतः कार्यान्वयन निर्भर है और शायद मुझे कुछ स्पष्ट रूप से स्पष्ट याद आ गया हो, लेकिन मैं अपने इंटरनेट खोजों/ड्राफ्ट डब्ल्यू 3 सी स्पेक के माध्यम से स्कीम के बारे में विशेष कुछ भी नहीं देख पा रहा था, इसलिए कोई मदद websockets/जावास्क्रिप्ट की आंतरिक कार्यप्रणाली की मेरी समझ में बहुत सराहना की है!
सीटीआर घटना का आह्वान कर सकता है ... क्या यह दस्तावेज नहीं हुआ है? – usr
@usr एपीआई [spec राज्य] (http://dev.w3.org/html5/websockets/#handler-websocket-onopen) कि "ऑनसोपेन" ईवेंट ट्रिगर किया जाना चाहिए जब "वेबस्केट कनेक्शन स्थापित हो"। मेरे उत्तर के पहले पैरा के अनुसार, यह केवल निष्पादन के दायरे को पूरा करने के बाद ही हो सकता है (कोड जो कन्स्ट्रक्टर को बुलाता है)। अगर डेवलपर को 'ओपन' घटना से जुड़ने का मौका मिलने से पहले 'ओपन' को ट्रिगर किया जा सकता है तो यह एक मौलिक दोष होगा। – leggetter
** फेसपाल्म ** गंभीरता से ?? ** श्वास ** आपको संदेह नहीं है, बस फर्श लगाया गया है कि यह इस तरह से किया गया था। पृथ्वी पर क्यों उन्होंने कॉन्फ़िगरेशन ऑब्जेक्ट प्रदान नहीं किया है जैसे लगभग हर जावास्क्रिप्ट लाइब्रेरी ऑब्जेक्ट सृजन के लिए करता है ... – Gus