वेबसॉकेट का उपयोग करना
यह एथेरियम ब्लॉकचेन से अनुरोध करने के लिए वेबसॉकेट और अल्केमी का उपयोग करने के लिए एक एंट्री लेवल गाइड है।
(opens in a new tab)वेबसॉकेट बनाम HTTP
HTTP के विपरीत, वेबसॉकेट के साथ, जब आप विशिष्ट जानकारी चाहते हैं तो आपको लगातार अनुरोध करने की आवश्यकता नहीं होती है। वेबसॉकेट आपके लिए एक नेटवर्क कनेक्शन बनाए रखते हैं (यदि सही तरीके से किया जाए) और परिवर्तनों को सुनते हैं।
किसी भी नेटवर्क कनेक्शन की तरह, आपको यह नहीं मान लेना चाहिए कि एक वेबसॉकेट बिना किसी रुकावट के हमेशा खुला रहेगा, लेकिन मैन्युअल रूप से ड्रॉप किए गए कनेक्शन और पुन: कनेक्शन को सही ढंग से संभालना चुनौतीपूर्ण हो सकता है। वेबसॉकेट का एक और नुकसान यह है कि आपको प्रतिक्रिया में HTTP स्टेटस कोड नहीं मिलते हैं, बल्कि केवल त्रुटि संदेश मिलता है।
अल्केमी वेब3 (opens in a new tab) बिना किसी कॉन्फ़िगरेशन के WebSocket विफलताओं और पुन: प्रयासों के लिए स्वचालित रूप से हैंडलिंग जोड़ता है।
इसे आज़माएँ
वेबसॉकेट का परीक्षण करने का सबसे आसान तरीका wscat (opens in a new tab) जैसे वेबसॉकेट अनुरोध करने के लिए कमांड लाइन टूल इंस्टॉल करना है। wscat का उपयोग करके, आप इस प्रकार अनुरोध भेज सकते हैं:
नोट: यदि आपके पास अल्केमी खाता है तो आप demo को अपनी API की से बदल सकते हैं। यहां एक मुफ्त अल्केमी खाते के लिए साइन अप करें! (opens in a new tab)_
1wscat -c wss://eth-mainnet.ws.alchemyapi.io/ws/demo23> {"jsonrpc": "2.0", "id": 0, "method": "eth_gasPrice"}45< {"jsonrpc": "2.0", "result": "0xb2d05e00", "id": 0}6वेबसॉकेट का उपयोग कैसे करें
शुरू करने के लिए, अपने ऐप के लिए वेबसॉकेट URL का उपयोग करके एक वेबसॉकेट खोलें। आप अपने डैशबोर्ड (opens in a new tab) में ऐप का पेज खोलकर और "की देखें" पर क्लिक करके अपने ऐप का वेबसॉकेट URL पा सकते हैं। ध्यान दें कि वेबसॉकेट के लिए आपके ऐप का URL HTTP अनुरोधों के लिए इसके URL से अलग है, लेकिन दोनों "की देखें" पर क्लिक करके पाए जा सकते हैं।
अल्केमी API संदर्भ (opens in a new tab) में सूचीबद्ध किसी भी API का उपयोग वेबसॉकेट के माध्यम से किया जा सकता है। ऐसा करने के लिए, उसी पेलोड का उपयोग करें जिसे HTTP POST अनुरोध के मुख्य भाग के रूप में भेजा जाएगा, लेकिन इसके बजाय उस पेलोड को वेबसॉकेट के माध्यम से भेजें।
वेब3 के साथ
वेब3 जैसी क्लाइंट लाइब्रेरी का उपयोग करते समय वेबसॉकेट में संक्रमण करना सरल है। अपने वेब3 क्लाइंट को इंस्टेंट करते समय बस HTTP वाले के बजाय वेबसॉकेट URL पास करें। उदाहरण के लिए:
1const web3 = new Web3("wss://eth-mainnet.ws.alchemyapi.io/ws/your-api-key")23web3.eth.getBlockNumber().then(console.log) // -> 7946893सब्सक्रिप्शन API
वेबसॉकेट के माध्यम से कनेक्ट होने पर, आप दो अतिरिक्त तरीकों का उपयोग कर सकते हैं: eth_subscribe और eth_unsubscribe। ये तरीके आपको विशेष इवेंट्स को सुनने और तुरंत सूचित होने की अनुमति देंगे।
eth_subscribe
निर्दिष्ट इवेंट्स के लिए एक नई सदस्यता बनाता है। eth_subscribe के बारे में और जानें (opens in a new tab)।
पैरामीटर्स
- सदस्यता के प्रकार
- वैकल्पिक पैरामीटर
पहला तर्क उस इवेंट के प्रकार को निर्दिष्ट करता है जिसे सुनना है। दूसरे तर्क में अतिरिक्त विकल्प होते हैं जो पहले तर्क पर निर्भर करते हैं। विभिन्न विवरण प्रकार, उनके विकल्प, और उनके इवेंट पेलोड नीचे वर्णित हैं।
रिटर्न
सदस्यता आईडी: यह आईडी किसी भी प्राप्त इवेंट से जुड़ी होगी, और इसका उपयोग eth_unsubscribe का उपयोग करके सदस्यता को रद्द करने के लिए भी किया जा सकता है।
सब्सक्रिप्शन इवेंट्स
जब तक सदस्यता सक्रिय है, तब तक आपको इवेंट्स प्राप्त होंगे जो निम्नलिखित फ़ील्ड वाले ऑब्जेक्ट हैं:
jsonrpc: हमेशा "2.0"method: हमेशा "eth_subscription"params: निम्नलिखित फ़ील्ड वाला एक ऑब्जेक्ट:subscription:eth_subscribeकॉल द्वारा लौटाई गई सदस्यता आईडी जिसने यह सदस्यता बनाई है।result: एक ऑब्जेक्ट जिसकी सामग्री सदस्यता के प्रकार के आधार पर भिन्न होती है।
सदस्यता के प्रकार
alchemy_newFullPendingTransactions
लंबित स्थिति में जोड़े गए सभी लेन-देनों के लिए लेनदेन की जानकारी लौटाता है। यह सदस्यता प्रकार लंबित लेन-देन की सदस्यता लेता है, जो मानक वेब3 कॉल web3.eth.subscribe("pendingTransactions") के समान है, लेकिन इसमें यह भिन्न है कि यह केवल लेनदेन हैश के बजाय पूर्ण लेनदेन जानकारी उत्सर्जित करता है।
उदाहरण:
1> {"jsonrpc": "2.0", "id": 1, "method": "eth_subscribe", "params": ["alchemy_newFullPendingTransactions"]}23< {"id":1,"result":"0x9a52eeddc2b289f985c0e23a7d8427c8","jsonrpc":"2.0"}4< {5 "jsonrpc":"2.0",6 "method":"eth_subscription",7 "params":{8 "result":{9 "blockHash":null,10 "blockNumber":null,11 "from":"0xa36452fc31f6f482ad823cd1cf5515177d57667f",12 "gas":"0x1adb0",13 "gasPrice":"0x7735c4d40",14 "hash":"0x50bff0736c713458c92dd1848d12f3354149be1363123dae35e94e0f2a9d56bf",15"input":"0xa9059cbb0000000000000000000000000d0707963952f2fba59dd06f2b425ace40b492fe0000000000000000000000000000000000000000000015b1111266cfca100000",16 "nonce":"0x0",17 "to":"0xea38eaa3c86c8f9b751533ba2e562deb9acded40",18 "transactionIndex":null,19 "value":"0x0",20 "v":"0x26",21 "r":"0x195c2c1ed126088e12d290aa93541677d3e3b1d10f137e11f86b1b9227f01e3b",22 "s":"0x60fc4edbf1527832a2a36dbc1e63ed6193a6eee654472fbebbf88ef1750b5344"},23 "subscription":"0x9a52eeddc2b289f985c0e23a7d8427c8"24 }25 }26सभी दिखाएँnewHeads
चेन पुनर्गठन के दौरान सहित, किसी भी समय चेन में एक नया हेडर जोड़े जाने पर एक इवेंट उत्सर्जित करता है।
जब एक चेन पुनर्गठन होता है, तो यह सदस्यता एक इवेंट उत्सर्जित करेगी जिसमें नई चेन के लिए सभी नए हेडर शामिल होंगे। विशेष रूप से, इसका मतलब है कि आप एक ही ऊंचाई के साथ कई हेडर उत्सर्जित देख सकते हैं, और जब ऐसा होता है तो बाद के हेडर को पुनर्गठन के बाद सही माना जाना चाहिए।
उदाहरण:
1> {"jsonrpc": "2.0", "id": 1, "method": "eth_subscribe", "params": ["newHeads"]}23< {"jsonrpc":"2.0","id":2,"result":"0x9ce59a13059e417087c02d3236a0b1cc"}4< {5 "jsonrpc": "2.0",6 "method": "eth_subscription",7 "params": {8 "result": {9 "extraData": "0xd983010305844765746887676f312e342e328777696e646f7773",10 "gasLimit": "0x47e7c4",11 "gasUsed": "0x38658",12 "logsBloom":13"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",14 "nonce": "0x084149998194cc5f",15 "number": "0x1348c9",16 "parentHash": "0x7736fab79e05dc611604d22470dadad26f56fe494421b5b333de816ce1f25701",17 "receiptRoot": "0x2fab35823ad00c7bb388595cb46652fe7886e00660a01e867824d3dceb1c8d36",18 "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",19 "stateRoot": "0xb3346685172db67de536d8765c43c31009d0eb3bd9c501c9be3229203f15f378",20 "timestamp": "0x56ffeff8",21 "transactionsRoot": "0x0167ffa60e3ebc0b080cdb95f7c0087dd6c0e61413140e39d94d3468d7c9689f"22 },23 "subscription": "0x9ce59a13059e417087c02d3236a0b1cc"24 }25}26सभी दिखाएँlogs
नए जोड़े गए ब्लॉक के हिस्से के रूप में लॉग उत्सर्जित करता है जो निर्दिष्ट फ़िल्टर मानदंडों से मेल खाते हैं।
जब एक चेन पुनर्गठन होता है, तो पुरानी चेन पर ब्लॉक के हिस्से के रूप में लॉग removed प्रॉपर्टी को true पर सेट करके फिर से उत्सर्जित किए जाएंगे। इसके अलावा, नई चेन पर ब्लॉक के हिस्से के रूप में लॉग उत्सर्जित होते हैं, जिसका अर्थ है कि पुनर्गठन के मामले में एक ही लेनदेन के लिए कई बार लॉग देखना संभव है।
पैरामीटर
- निम्नलिखित फ़ील्ड वाला एक ऑब्जेक्ट:
address(वैकल्पिक): या तो एक पता दर्शाने वाला स्ट्रिंग या ऐसे स्ट्रिंग्स का एक ऐरे।- इनमें से केवल एक पते से बनाए गए लॉग ही उत्सर्जित किए जाएंगे।
topics: विषय विनिर्देशक का एक ऐरे।- प्रत्येक विषय विनिर्देशक या तो
nullहै, किसी विषय को दर्शाने वाला एक स्ट्रिंग, या स्ट्रिंग्स का एक ऐरे है। - ऐरे में प्रत्येक स्थिति जो
nullनहीं है, उत्सर्जित लॉग को केवल उन लोगों तक सीमित करती है जिनके पास उस स्थिति में दिए गए विषयों में से एक है।
- प्रत्येक विषय विनिर्देशक या तो
विषय विनिर्देशों के कुछ उदाहरण:
[]: किसी भी विषय की अनुमति है।[A]: पहली स्थिति में A (और बाद में कुछ भी)।[null, B]: पहली स्थिति में कुछ भी और दूसरी स्थिति में B (और बाद में कुछ भी)।[A, B]: पहली स्थिति में A और दूसरी स्थिति में B (और बाद में कुछ भी)।[[A, B], [A, B]]: पहली स्थिति में (A या B) और दूसरी स्थिति में (A या B) (और बाद में कुछ भी)।
उदाहरण:
1> {"jsonrpc": "2.0", "id": 1, "method": "eth_subscribe", "params": ["logs", {"address": "0x8320fe7702b96808f7bbc0d4a888ed1468216cfd", "topics": ["0xd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902"]}]}23< {"jsonrpc":"2.0","id":2,"result":"0x4a8a4c0517381924f9838102c5a4dcb7"}4< {5 "jsonrpc": "2.0",6 "method": "eth_subscription",7 "params": {8 "subscription": "0x4a8a4c0517381924f9838102c5a4dcb7",9 "result": {10 "address": "0x8320fe7702b96808f7bbc0d4a888ed1468216cfd",11 "blockHash": "0x61cdb2a09ab99abf791d474f20c2ea89bf8de2923a2d42bb49944c8c993cbf04",12 "blockNumber": "0x29e87",13 "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000003",14 "logIndex":"0x0",15 "topics":["0xd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902"],16 "transactionHash": "0xe044554a0a55067caafd07f8020ab9f2af60bdfe337e395ecd84b4877a3d1ab4",17 "transactionIndex": "0x0"18 }19 }20}21सभी दिखाएँeth_unsubscribe
एक मौजूदा सदस्यता को रद्द करता है ताकि आगे कोई इवेंट न भेजे जाएं।
पैरामीटर
- सदस्यता आईडी, जैसा कि पहले
eth_subscribeकॉल से वापस आया था।
देता
true यदि सदस्यता सफलतापूर्वक रद्द कर दी गई थी, या false यदि दी गई आईडी के साथ कोई सदस्यता मौजूद नहीं थी।
उदाहरण:
अनुरोध
1curl https://eth-mainnet.alchemyapi.io/v2/your-api-key2-X POST3-H "Content-Type: application/json"4-d '{"id": 1, "method": "eth_unsubscribe", "params": ["0x9cef478923ff08bf67fde6c64013158d"]}'56परिणाम
1{2 "jsonrpc": "2.0",3 "id": 1,4 "result": true5}मुफ्त में अल्केमी के साथ साइन अप करें (opens in a new tab), हमारे प्रलेखन (opens in a new tab) देखें, और नवीनतम समाचारों के लिए, हमें ट्विटर (opens in a new tab) पर फ़ॉलो करें।
पेज का अंतिम अपडेट: 1 अक्टूबर 2025
