ప్రధాన కంటెంట్‌కి స్కిప్ చేయండి

వెబ్ సాకెట్‌లను ఉపయోగించడం

alchemy
వెబ్‌సాకెట్‌లు
ప్రశ్నించడం
జావాస్క్రిప్ట్
ప్రారంభ
Elan Halpern
1 డిసెంబర్, 2020
5 నిమిషం పఠనం

ఇది ఇతీరియము బ్లాక్ చైనుకు అభ్యర్థనలు చేయడానికి వెబ్‌సాకెట్‌లు మరియు 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/demo
2
3> {"jsonrpc": "2.0", "id": 0, "method": "eth_gasPrice"}
4
5< {"jsonrpc": "2.0", "result": "0xb2d05e00", "id": 0}
6

వెబ్‌సాకెట్‌లను ఎలా ఉపయోగించాలి

ప్రారంభించడానికి, మీ యాప్ కోసం వెబ్‌సాకెట్ URLను ఉపయోగించి ఒక వెబ్‌సాకెట్‌ను తెరవండి. మీరు మీ డాష్‌బోర్డ్opens in a new tabలో మీ యాప్ పేజీని తెరిచి, "కీని వీక్షించు" పై క్లిక్ చేయడం ద్వారా మీ యాప్ యొక్క వెబ్‌సాకెట్ URLను కనుగొనవచ్చు. మీ యాప్ యొక్క వెబ్‌సాకెట్‌ల కోసం URL దాని HTTP అభ్యర్థనల కోసం URL కంటే భిన్నంగా ఉంటుందని గమనించండి, కానీ రెండింటినీ "కీని వీక్షించు" పై క్లిక్ చేయడం ద్వారా కనుగొనవచ్చు.

మీ Alchemy డ్యాష్‌బోర్డ్‌లో మీ వెబ్‌సాకెట్ URLను ఎక్కడ కనుగొనాలి

Alchemy API Referenceopens in a new tabలో జాబితా చేయబడిన ఏవైనా APIలను వెబ్‌సాకెట్ ద్వారా ఉపయోగించవచ్చు. అలా చేయడానికి, HTTP POST అభ్యర్థన యొక్క బాడీగా పంపబడే అదే పేలోడ్‌ను ఉపయోగించండి, కానీ బదులుగా ఆ పేలోడ్‌ను వెబ్‌సాకెట్ ద్వారా పంపండి.

Web3తో

Web3 వంటి క్లయింట్ లైబ్రరీని ఉపయోగిస్తున్నప్పుడు వెబ్‌సాకెట్‌లకు మారడం చాలా సులభం. మీ Web3 క్లయింట్‌ను ప్రారంభించేటప్పుడు HTTP URLకు బదులుగా వెబ్‌సాకెట్ URLను పంపండి. ఉదాహరణకి:

1const web3 = new Web3("wss://eth-mainnet.ws.alchemyapi.io/ws/your-api-key")
2
3web3.eth.getBlockNumber().then(console.log) // -> 7946893

చందా API

వెబ్‌సాకెట్ ద్వారా కనెక్ట్ అయినప్పుడు, మీరు రెండు అదనపు పద్ధతులను ఉపయోగించవచ్చు: eth_subscribe మరియు eth_unsubscribe. ఈ పద్ధతులు మీరు నిర్దిష్ట ఈవెంట్‌ల కోసం వినడానికి మరియు వెంటనే తెలియజేయబడటానికి అనుమతిస్తాయి.

eth_subscribe

పేర్కొన్న ఈవెంట్‌ల కోసం కొత్త చందాను సృష్టిస్తుంది. eth_subscribe గురించి మరింత తెలుసుకోండిopens in a new tab.

పారామితులు

  1. చందా రకాలు
  2. ఐచ్ఛిక పారామీటర్లు

మొదటి వాదన వినవలసిన ఈవెంట్ రకాన్ని నిర్దేశిస్తుంది. రెండవ వాదనలో మొదటి వాదనపై ఆధారపడి ఉండే అదనపు ఎంపికలు ఉంటాయి. వివిధ వివరణ రకాలు, వాటి ఎంపికలు, మరియు వాటి ఈవెంట్ పేలోడ్‌లు క్రింద వివరించబడ్డాయి.

తిరిగి వస్తుంది

చందా ID: ఈ ID అందుకున్న ఏవైనా ఈవెంట్‌లకు జోడించబడుతుంది, మరియు eth_unsubscribe ఉపయోగించి చందాను రద్దు చేయడానికి కూడా ఉపయోగించవచ్చు.

చందా ఈవెంట్‌లు

చందా యాక్టివ్‌గా ఉన్నప్పుడు, మీరు ఈ క్రింది ఫీల్డ్‌లతో వస్తువులైన ఈవెంట్‌లను అందుకుంటారు:

  • jsonrpc: ఎల్లప్పుడూ "2.0"
  • విధానం: ఎల్లప్పుడూ "eth_subscription"
  • పారామీటర్లు: కింది ఫీల్డ్‌లతో కూడిన ఒక వస్తువు:
    • subscription: ఈ చందాను సృష్టించిన eth_subscribe కాల్ ద్వారా తిరిగి ఇవ్వబడిన చందా ID.
    • ఫలితం: చందా రకంపై ఆధారపడి కంటెంట్‌లు మారే ఒక వస్తువు.

చందా రకాలు

  1. alchemy_newFullPendingTransactions

పెండింగ్ స్థితికి జోడించబడిన అన్ని లావాదేవీల కోసం లావాదేవీ సమాచారాన్ని తిరిగి ఇస్తుంది. ఈ చందా రకం పెండింగ్‌లో ఉన్న లావాదేవీలకు చందా చేస్తుంది, ఇది ప్రామాణిక Web3 కాల్ web3.eth.subscribe("pendingTransactions") ను పోలి ఉంటుంది, కానీ ఇది లావాదేవీ హాష్‌లకు బదులుగా పూర్తి లావాదేవీ సమాచారాన్ని విడుదల చేస్తుంది.

ఉదాహరణ:

1> {"jsonrpc": "2.0", "id": 1, "method": "eth_subscribe", "params": ["alchemy_newFullPendingTransactions"]}
2
3< {"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
అన్నీ చూపించు
  1. newHeads

చైన్ పునర్వ్యవస్థీకరణ సమయంలో సహా, చైన్‌కు కొత్త హెడర్ జోడించబడిన ఏ సమయంలోనైనా ఒక ఈవెంట్‌ను విడుదల చేస్తుంది.

ఒక చైన్ పునర్వ్యవస్థీకరణ జరిగినప్పుడు, ఈ చందా కొత్త చైన్ కోసం అన్ని కొత్త హెడర్‌లను కలిగి ఉన్న ఒక ఈవెంట్‌ను విడుదల చేస్తుంది. ప్రత్యేకించి, దీని అర్థం మీరు ఒకే ఎత్తుతో బహుళ హెడర్‌లను విడుదల చేయడాన్ని చూడవచ్చు, మరియు ఇది జరిగినప్పుడు పునర్వ్యవస్థీకరణ తర్వాత తర్వాత వచ్చే హెడర్‌ను సరైనదిగా తీసుకోవాలి.

ఉదాహరణ:

1> {"jsonrpc": "2.0", "id": 1, "method": "eth_subscribe", "params": ["newHeads"]}
2
3< {"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
అన్నీ చూపించు
  1. logs

పేర్కొన్న ఫిల్టర్ ప్రమాణాలకు సరిపోయే కొత్తగా జోడించిన బ్లాక్‌లలో భాగమైన లాగ్‌లను విడుదల చేస్తుంది.

ఒక చైన్ పునర్వ్యవస్థీకరణ జరిగినప్పుడు, పాత చైన్‌లోని బ్లాక్‌లలో భాగమైన లాగ్‌లు removed ప్రాపర్టీని true కి సెట్ చేసి మళ్లీ విడుదల చేయబడతాయి. ఇంకా, కొత్త చైన్‌లోని బ్లాక్‌లలో భాగమైన లాగ్‌లు విడుదల చేయబడతాయి, దీని అర్థం పునర్వ్యవస్థీకరణ సందర్భంలో ఒకే లావాదేవీ కోసం లాగ్‌లను బహుళ సార్లు చూడటం సాధ్యమవుతుంది.

పరామితులు

  1. ఈ క్రింది ఫీల్డ్‌లతో ఒక వస్తువు:
    • చిరునామా (ఐచ్ఛికం): ఒక చిరునామాను సూచించే స్ట్రింగ్ లేదా అటువంటి స్ట్రింగ్‌ల శ్రేణి.
      • ఈ చిరునామాలలో ఒకదాని నుండి సృష్టించబడిన లాగ్‌లు మాత్రమే విడుదల చేయబడతాయి.
    • 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"]}]}
2
3< {"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

ఇప్పటికే ఉన్న చందాను రద్దు చేస్తుంది, తద్వారా తదుపరి ఈవెంట్‌లు పంపబడవు.

పరామితులు

  1. చందా ID, ఇది గతంలో eth_subscribe కాల్ నుండి తిరిగి ఇవ్వబడింది.

తిరిగి ఇస్తుంది

ఒక చందా విజయవంతంగా రద్దు చేయబడితే true అని లేదా ఇచ్చిన IDతో ఏ చందా లేకపోతే false అని తిరిగి ఇస్తుంది.

ఉదాహరణ:

అభ్యర్థన

1curl https://eth-mainnet.alchemyapi.io/v2/your-api-key
2-X POST
3-H "Content-Type: application/json"
4-d '{"id": 1, "method": "eth_unsubscribe", "params": ["0x9cef478923ff08bf67fde6c64013158d"]}'
5
6

ఫలితం

1{
2 "jsonrpc": "2.0",
3 "id": 1,
4 "result": true
5}

Alchemyopens in a new tabతో ఉచితంగా సైన్ అప్ చేయండి, మా డాక్యుమెంటేషన్‌నుopens in a new tab తనిఖీ చేయండి, మరియు తాజా వార్తల కోసం, మమ్మల్ని Twitteropens in a new tabలో అనుసరించండి.

పేజీ చివరి అప్‌డేట్: 1 అక్టోబర్, 2025

ఈ ట్యుటోరియల్ ఉపయోగపడిందా?