Web3 और DApp विकास की मूल बातें · पाठ

इवेंट सुनना

ऑफ़-चेन सब्सक्रिप्शन

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

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

ऑफ-चेन Events का उपयोग

जब तक कोई चीज़ उनके लिए सुनती नहीं है, events बेकार हैं। ऑफ-चेन ऐप्स - वेब फ्रंट-एंड, बॉट और इंडेक्सर - ऑन-चेन गतिविधि पर प्रतिक्रिया देने के लिए logs की सदस्यता लेते हैं।

ethers.js और web3.js जैसी लाइब्रेरी इसे सरल बनाती हैं।

ethers.js से सुनना

ethers.js में contract.on(eventName, callback) का उपयोग करके listener जोड़ा जाता है। callback को डीकोड किए गए पैरामीटरों के साथ मूल event ऑब्जेक्ट भी मिलता है।

<code>contract.on('Transfer', (from, to, amount, event) => {
    console.log(from, '->', to, amount.toString());
});</code>

पिछले Events खोजना

रीयल-टाइम events के बजाय इतिहास पढ़ने के लिए ब्लॉक सीमा के साथ queryFilter का उपयोग करें। यह मेल खाने वाले पिछले logs की एक array लौटाता है।

<code>const logs = await contract.queryFilter('Transfer', 0, 'latest');
logs.forEach(l => console.log(l.args.amount.toString()));</code>

Indexed मान से फ़िल्टर करना

क्योंकि कुछ पैरामीटर indexed होते हैं, आप ऐसा फ़िल्टर बना सकते हैं जो केवल कुछ topics से मेल खाए, जैसे किसी एक पते पर प्राप्त ट्रांसफ़र।

<code>const filter = contract.filters.Transfer(null, myAddress);
const received = await contract.queryFilter(filter);</code>

web3.js से सुनना

web3.js लाइब्रेरी contract.events.EventName() के माध्यम से event emitter पैटर्न का उपयोग करती है, जिसमें data और error callbacks होते हैं।

<code>contract.events.Transfer({ fromBlock: 'latest' })
  .on('data', (e) => console.log(e.returnValues))
  .on('error', console.error);</code>

WebSocket Providers

लाइव event subscriptions के लिए WebSocket कनेक्शन (wss://) आवश्यक है, क्योंकि HTTP providers अपडेट भेज नहीं सकते। एक बार की इतिहास queries के लिए HTTP provider पर्याप्त है।

<code>// const provider = new ethers.WebSocketProvider('wss://...');
// HTTP works for queryFilter, not for live .on()</code>

ब्लॉक पुष्टियाँ

यदि किसी event का ब्लॉक बदल दिया जाता है, तो वह reorged होकर हट सकता है। किसी event को अंतिम मानने से पहले कई पुष्टियों की प्रतीक्षा करें, खासकर मूल्य के ट्रांसफ़र के मामलों में।

<code>contract.on('Deposit', async (acct, amount, event) => {
    await event.getTransactionReceipt();
    // optionally wait N confirmations
});</code>

Indexers और The Graph

बड़े dApps के लिए The Graph जैसा समर्पित indexer events को ग्रहण करके खोजी जा सकने वाली GraphQL API उपलब्ध कराता है। यह ब्राउज़र में logs स्कैन करने की तुलना में कहीं बेहतर तरीके से बढ़ सकता है।

Raw Logs को डीकोड करना

यदि आपके पास raw logs हैं, तो आप interface का उपयोग करके कॉन्ट्रैक्ट के ABI से उन्हें डीकोड कर सकते हैं। Topic 0 में मौजूद सिग्नेचर हैश यह पहचानता है कि वह कौन-सा event है।

<code>const iface = new ethers.Interface(abi);
const parsed = iface.parseLog(rawLog);
console.log(parsed.name, parsed.args);</code>

डुप्लिकेट हैंडलिंग से बचना

दोबारा कनेक्ट होने पर listeners को एक ही event एक से अधिक बार मिल सकता है। प्रोसेस किए गए log identifiers (transaction hash + log index) का रिकॉर्ड रखें, ताकि हैंडलिंग idempotent बनी रहे।

<code>const key = event.transactionHash + ':' + event.logIndex;
if (seen.has(key)) return;
seen.add(key);</code>

Listeners की सफ़ाई करना

मेमोरी लीक और डुप्लिकेट handlers से बचने के लिए किसी component के unmount होने पर listeners हटाएँ। इसके लिए contract.off या removeAllListeners का उपयोग करें।

<code>function handler(from, to, amount) { /* ... */ }
contract.on('Transfer', handler);
// later:
contract.off('Transfer', handler);</code>

त्वरित जाँच

Events के लिए सुनने की अपनी समझ जाँचें।

पुनरावलोकन

आपने सीखा कि ऑफ-चेन कोड events के लिए कैसे सुनता है:

  • लाइव events के लिए contract.on(), इतिहास के लिए queryFilter
  • फ़िल्टर indexed topics को लक्षित करते हैं
  • लाइव subscriptions के लिए WebSocket providers आवश्यक हैं
  • पुष्टियों की प्रतीक्षा करें, logs के डुप्लिकेट हटाएँ और listeners की सफ़ाई करें
  • The Graph जैसे Indexers event queries को बड़े स्तर पर संभाल सकते हैं
शुरुआत निःशुल्क

एआई शिक्षक के साथ Web3 और DApp विकास की मूल बातें सीखें — निःशुल्क

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

पाठ्यक्रम
29
पाठ
105

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

क्या “इवेंट सुनना” पाठ निःशुल्क है?

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

“इवेंट सुनना” में मैं क्या सीखूँगा?

ऑफ़-चेन सब्सक्रिप्शन आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Web3 और DApp विकास की मूल बातें का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Web3 और DApp विकास की मूल बातें शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

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

“इवेंट सुनना” पाठ पूरा करने में कितना समय लगता है?

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

क्या मैं इस Web3 और DApp विकास की मूल बातें पाठ में कोड लिख और चला सकता हूँ?

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

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

  1. इवेंट घोषित करना
  2. इंडेक्स किए गए पैरामीटर
  3. इवेंट सुनना
  4. इवेंट बनाम संग्रहण
← Web3 और DApp विकास की मूल बातें पर वापस जाएँ