JavaScript Academy · पाठ

कनेक्शन जीवनचक्र और त्रुटियाँ

open, close और error इवेंट संभालिए।

पाठ 3, कुल 4 में से13 चरण

कनेक्शन जीवनचक्र और त्रुटियाँ, CoddyKit पर JavaScript Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह JavaScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। JavaScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

पूरा जीवनचक्र

एक सॉकेट CONNECTING → OPEN → CLOSING → CLOSED अवस्थाओं से गुजरता है। इन बदलावों से चार घटनाएँ जुड़ी हैं: open, message, error और close।

बंद होने की घटना

कनेक्शन सामान्य रूप से या असामान्य रूप से समाप्त होने पर onclose सक्रिय होता है। इस घटना में code, reason और wasClean होते हैं।

socket.onclose = (event) => {
  console.log("Closed", event.code, event.reason, event.wasClean);
};

बंद होने के कोड

मानक कोड में 1000 (सामान्य), 1001 (दूर जा रहा है), 1006 (असामान्य, कोई बंद फ़्रेम नहीं) और 1011 (सर्वर त्रुटि) शामिल हैं। 4000–4999 कोड ऐप द्वारा परिभाषित किए जा सकते हैं।

socket.onclose = (e) => {
  if (e.code === 1000) console.log("normal close");
  else console.log("unexpected", e.code);
};

जानबूझकर बंद करना

socket.close(code, reason) शालीनतापूर्वक बंद होने की प्रक्रिया शुरू करता है। सामान्य रूप से बंद करने के लिए 1000 का उपयोग करें; reason स्ट्रिंग 123 बाइट से छोटी होनी चाहिए।

socket.close(1000, "user logged out");

त्रुटि की घटना

विफलता होने पर onerror सक्रिय होता है। सुरक्षा कारणों से त्रुटि की घटना में जानबूझकर बहुत कम जानकारी होती है — इसमें विस्तृत कारण नहीं दिया जाता। इसके बाद लगभग हमेशा close घटना आती है।

socket.onerror = (event) => {
  console.log("Socket error — a close will follow");
};

सामान्य और असामान्य स्थिति में अंतर

event.wasClean केवल तभी true होता है जब दोनों पक्षों ने बंद करने वाले फ़्रेमों का आदान-प्रदान किया हो। नेटवर्क कनेक्शन टूटने पर wasClean: false और कोड 1006 मिलता है।

socket.onclose = (e) => {
  if (!e.wasClean) console.log("Connection dropped unexpectedly");
};

संसाधनों की सफ़ाई

कनेक्शन बंद होने पर टाइमर (हार्टबीट) हटाएँ, pending अनुरोधों को अस्वीकार करें और यूआई की स्थिति अपडेट करें, ताकि ऐप डिस्कनेक्शन को दिखा सके।

socket.onclose = () => {
  clearInterval(heartbeatTimer);
  pending.forEach((reject) => reject(new Error("disconnected")));
  pending.clear();
};

श्रोताओं को हटाना

यदि आपने addEventListener से हैंडलर जोड़े हैं, तो मेमोरी लीक से बचने के लिए कनेक्शन बंद होने पर उन्हें हटा दें, खासकर सॉकेट दोबारा बनाते समय।

function cleanup() {
  socket.removeEventListener("message", onMessage);
  socket.removeEventListener("close", onClose);
}

बंद होते समय readyState

close() को कॉल करने और onclose घटना के बीच readyState की स्थिति CLOSING (2) होती है। इस अवधि में भेजे गए संदेशों को अनदेखा कर दिया जाता है।

socket.close();
console.log(socket.readyState); // 2 (CLOSING)

सर्वर की निष्क्रियता समय-सीमा

सर्वर और प्रॉक्सी अक्सर 30–60 सेकंड बाद निष्क्रिय कनेक्शन बंद कर देते हैं। हार्टबीट कनेक्शन को सक्रिय रखते हैं और आपको कनेक्शन टूटने का तुरंत पता लगाने देते हैं।

निष्क्रिय कनेक्शन का पता लगाना

हार्टबीट को निगरानी तंत्र के साथ मिलाएँ: यदि किसी अवधि के भीतर पोंग न आए, तो सॉकेट को निष्क्रिय मानकर बंद कर दें, ताकि दोबारा कनेक्शन शुरू हो सके।

let pongTimer;
function ping() {
  socket.send(JSON.stringify({ type: "ping" }));
  pongTimer = setTimeout(() => socket.close(4000, "no pong"), 5000);
}
socket.onmessage = (e) => {
  if (JSON.parse(e.data).type === "pong") clearTimeout(pongTimer);
};

त्वरित जाँच

जीवनचक्र को संभालने का परीक्षण करें।

पुनरावलोकन: जीवनचक्र और त्रुटियाँ

आपने onclose को उसके code/reason/wasClean के साथ संभाला, बंद होने के मानक कोड सीखे, जानबूझकर कनेक्शन बंद किया, कम जानकारी वाली onerror घटना से निपटे, टाइमर और श्रोताओं की सफ़ाई की और हार्टबीट निगरानी तंत्र बनाया। अगला विषय: दोबारा कनेक्शन की रणनीतियाँ।

शुरुआत निःशुल्क

एआई शिक्षक के साथ JavaScript सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
59
पाठ
200

अक्सर पूछे जाने वाले प्रश्न

क्या “कनेक्शन जीवनचक्र और त्रुटियाँ” पाठ निःशुल्क है?

हाँ — JavaScript Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “कनेक्शन जीवनचक्र और त्रुटियाँ” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। JavaScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“कनेक्शन जीवनचक्र और त्रुटियाँ” में मैं क्या सीखूँगा?

open, close और error इवेंट संभालिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ JavaScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या JavaScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर JavaScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“कनेक्शन जीवनचक्र और त्रुटियाँ” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस JavaScript Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर JavaScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. WebSocket कनेक्शन खोलना
  2. संदेश भेजना और प्राप्त करना
  3. कनेक्शन जीवनचक्र और त्रुटियाँ
  4. पुनः कनेक्शन रणनीतियाँ
← JavaScript Academy पर वापस जाएँ