ویب ساکٹس کا استعمال
یہ Ethereum بلاک چین سے درخواستیں کرنے کے لیے ویب ساکٹس اور Alchemy کے استعمال کی ایک ابتدائی سطح کی گائیڈ ہے۔
opens in a new tabویب ساکٹس بمقابلہ HTTP
HTTP کے برعکس، ویب ساکٹس کے ساتھ، جب آپ کو مخصوص معلومات چاہئیں تو آپ کو مسلسل درخواستیں کرنے کی ضرورت نہیں ہے۔ ویب ساکٹس آپ کے لیے ایک نیٹ ورک کنکشن برقرار رکھتے ہیں (اگر صحیح طریقے سے کیا جائے) اور تبدیلیوں کو سنتے ہیں۔
کسی بھی نیٹ ورک کنکشن کی طرح، آپ کو یہ فرض نہیں کرنا چاہیے کہ ایک ویب ساکٹ ہمیشہ بغیر کسی رکاوٹ کے کھلا رہے گا، لیکن منقطع کنکشنز اور دوبارہ کنکشن کو دستی طور پر صحیح طریقے سے ہینڈل کرنا مشکل ہو سکتا ہے۔ ویب ساکٹس کا ایک اور نقصان یہ ہے کہ آپ کو جواب میں HTTP اسٹیٹس کوڈز نہیں ملتے، بلکہ صرف غلطی کا پیغام ملتا ہے۔
Alchemy Web3opens in a new tab خود بخود ویب ساکٹ کی ناکامیوں اور دوبارہ کوششوں کے لیے ہینڈلنگ شامل کرتا ہے جس کے لیے کسی کنفیگریشن کی ضرورت نہیں ہوتی۔
اسے آزمائیں
ویب ساکٹس کو جانچنے کا سب سے آسان طریقہ wscatopens in a new tab جیسے ویب ساکٹ کی درخواستیں کرنے کے لیے کمانڈ لائن ٹول انسٹال کرنا ہے۔ wscat کا استعمال کرتے ہوئے، آپ مندرجہ ذیل طریقے سے درخواستیں بھیج سکتے ہیں:
نوٹ: اگر آپ کے پاس Alchemy اکاؤنٹ ہے تو آپ demo کو اپنی API کلید سے بدل سکتے ہیں۔ یہاں ایک مفت Alchemy اکاؤنٹ کے لیے سائن اپ کریں!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 میں ایپ کا صفحہ کھول کر اور "View Key" پر کلک کر کے اپنی ایپ کا ویب ساکٹ URL تلاش کر سکتے ہیں۔ نوٹ کریں کہ ویب ساکٹس کے لیے آپ کی ایپ کا URL HTTP درخواستوں کے لیے اس کے URL سے مختلف ہے، لیکن دونوں "View Key" پر کلک کرکے مل سکتے ہیں۔
Alchemy API حوالہopens in a new tab میں درج کوئی بھی API ویب ساکٹ کے ذریعے استعمال کیا جا سکتا ہے۔ ایسا کرنے کے لیے، وہی پے لوڈ استعمال کریں جو HTTP POST درخواست کے باڈی کے طور پر بھیجا جائے گا، لیکن اس کے بجائے اس پے لوڈ کو ویب ساکٹ کے ذریعے بھیجیں۔
Web3 کے ساتھ
Web3 جیسی کلائنٹ لائبریری کا استعمال کرتے ہوئے ویب ساکٹس میں منتقل ہونا آسان ہے۔ اپنے Web3 کلائنٹ کو انسٹینشیٹ کرتے وقت بس 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۔
پیرامیٹرز
- سبسکرپشن کی اقسام
- اختیاری پیرامیٹرز
پہلا آرگیومنٹ اس ایونٹ کی قسم بتاتا ہے جسے سننا ہے۔ دوسرے آرگیومنٹ میں اضافی آپشنز ہوتے ہیں جو پہلے آرگیومنٹ پر منحصر ہوتے ہیں۔ مختلف تفصیل کی اقسام، ان کے آپشنز، اور ان کے ایونٹ پے لوڈز ذیل میں بیان کیے گئے ہیں۔
واپسی
سبسکرپشن ID: یہ ID کسی بھی موصول ہونے والے ایونٹ کے ساتھ منسلک کی جائے گی، اور اسے eth_unsubscribe کا استعمال کرتے ہوئے سبسکرپشن کو منسوخ کرنے کے لیے بھی استعمال کیا جا سکتا ہے۔
سبسکرپشن ایونٹس
جب تک سبسکرپشن فعال ہے، آپ کو ایونٹس موصول ہوں گے جو مندرجہ ذیل فیلڈز کے ساتھ آبجیکٹس ہیں:
jsonrpc: ہمیشہ "2.0"method: ہمیشہ "eth_subscription"params: مندرجہ ذیل فیلڈز کے ساتھ ایک آبجیکٹ:subscription:eth_subscribeکال کے ذریعے واپس کی گئی سبسکرپشن ID جس نے یہ سبسکرپشن بنایا ہے۔result: ایک آبجیکٹ جس کا مواد سبسکرپشن کی قسم کے لحاظ سے مختلف ہوتا ہے۔
سبسکرپشن کی اقسام
alchemy_newFullPendingTransactions
ان تمام ٹرانزیکشنز کے لیے ٹرانزیکشن کی معلومات واپس کرتا ہے جو پینڈنگ اسٹیٹ میں شامل کی گئی ہیں۔ یہ سبسکرپشن کی قسم پینڈنگ ٹرانزیکشنز کو سبسکرائب کرتی ہے، جو معیاری Web3 کال 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
موجودہ سبسکرپشن کو منسوخ کرتا ہے تاکہ مزید کوئی ایونٹ نہ بھیجا جائے۔
پیرامیٹرز
- سبسکرپشن ID، جیسا کہ پہلے
eth_subscribeکال سے واپس کیا گیا تھا۔
واپسی
true اگر سبسکرپشن کامیابی سے منسوخ ہو گیا تھا، یا false اگر دی گئی ID کے ساتھ کوئی سبسکرپشن موجود نہیں تھا۔
مثال:
درخواست
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}Alchemy کے ساتھ مفت میں سائن اپ کریںopens in a new tab، ہمارے دستاویزاتopens in a new tab دیکھیں، اور تازہ ترین خبروں کے لیے، ہمیں Twitteropens in a new tab پر فالو کریں۔
صفحہ کی آخری تازہ کاری: 1 اکتوبر، 2025
