முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்

WebSockets-ஐப் பயன்படுத்துதல்

Alchemy
websockets
querying
JavaScript
தொடக்கநிலையாளர்
எலான் ஹால்பெர்ன்
1 டிசம்பர், 2020
5 நிமிட வாசிப்பு

இது Ethereum பிளாக்செயினுக்குக் கோரிக்கைகளைச் செய்ய WebSockets மற்றும் Alchemy-ஐப் பயன்படுத்துவதற்கான ஒரு தொடக்க நிலை வழிகாட்டியாகும்.

 (opens in a new tab)WebSockets மற்றும் HTTP

HTTP-ஐப் போலல்லாமல், WebSockets மூலம், உங்களுக்குக் குறிப்பிட்ட தகவல் தேவைப்படும்போது தொடர்ந்து கோரிக்கைகளைச் செய்ய வேண்டியதில்லை. WebSockets உங்களுக்காக ஒரு நெட்வொர்க் இணைப்பைப் பராமரிக்கின்றன (சரியாகச் செய்யப்பட்டால்) மற்றும் மாற்றங்களைக் கவனிக்கின்றன.

எந்தவொரு நெட்வொர்க் இணைப்பைப் போலவே, ஒரு WebSocket தடையின்றி எப்போதும் திறந்திருக்கும் என்று நீங்கள் கருதக்கூடாது, ஆனால் துண்டிக்கப்பட்ட இணைப்புகள் மற்றும் மீண்டும் இணைப்பதை கைமுறையாகச் சரியாகக் கையாள்வது சவாலானதாக இருக்கலாம். WebSockets-இன் மற்றொரு குறைபாடு என்னவென்றால், பதிலில் HTTP நிலை குறியீடுகளைப் பெற முடியாது, பிழைச் செய்தியை மட்டுமே பெற முடியும்.

Alchemy Web3 (opens in a new tab) எந்த உள்ளமைவும் தேவையில்லாமல் WebSocket தோல்விகள் மற்றும் மீண்டும் முயற்சிகளைக் கையாளுவதை தானாகவே சேர்க்கிறது.

இதை முயன்று பாருங்கள்

WebSockets-ஐச் சோதிப்பதற்கான எளிதான வழி, wscat (opens in a new tab) போன்ற WebSocket கோரிக்கைகளைச் செய்வதற்கான கட்டளை வரி கருவியை நிறுவுவதாகும். 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

WebSockets-ஐ எவ்வாறு பயன்படுத்துவது

தொடங்க, உங்கள் பயன்பாட்டிற்கான WebSocket URL-ஐப் பயன்படுத்தி ஒரு WebSocket-ஐத் திறக்கவும். உங்கள் டாஷ்போர்டில் (opens in a new tab) பயன்பாட்டின் பக்கத்தைத் திறந்து "View Key"-ஐக் கிளிக் செய்வதன் மூலம் உங்கள் பயன்பாட்டின் WebSocket URL-ஐக் கண்டறியலாம். WebSockets-க்கான உங்கள் பயன்பாட்டின் URL, HTTP கோரிக்கைகளுக்கான அதன் URL-லிருந்து வேறுபட்டது என்பதை நினைவில் கொள்ளவும், ஆனால் இரண்டையும் "View Key"-ஐக் கிளிக் செய்வதன் மூலம் கண்டறியலாம்.

உங்கள் Alchemy டாஷ்போர்டில் உங்கள் WebSocket URL-ஐ எங்கே கண்டுபிடிப்பது

Alchemy API குறிப்பில் (opens in a new tab) பட்டியலிடப்பட்டுள்ள எந்த API-களையும் WebSocket வழியாகப் பயன்படுத்தலாம். அவ்வாறு செய்ய, HTTP POST கோரிக்கையின் உடலாக அனுப்பப்படும் அதே பேலோடைப் பயன்படுத்தவும், ஆனால் அதற்குப் பதிலாக அந்த பேலோடை WebSocket மூலம் அனுப்பவும்.

Web3 உடன்

Web3 போன்ற கிளையண்ட் லைப்ரரியைப் பயன்படுத்தும் போது WebSockets-க்கு மாறுவது எளிது. உங்கள் Web3 கிளையண்ட்டை உருவாக்கும் போது HTTP-க்கு பதிலாக WebSocket URL-ஐ அனுப்பவும். எடுத்துக்காட்டாக:

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

சந்தா API

WebSocket மூலம் இணைக்கப்படும் போது, நீங்கள் இரண்டு கூடுதல் முறைகளைப் பயன்படுத்தலாம்: eth_subscribe மற்றும் eth_unsubscribe. இந்த முறைகள் குறிப்பிட்ட நிகழ்வுகளைக் கவனிக்கவும் உடனடியாக அறிவிக்கப்படவும் உங்களை அனுமதிக்கும்.

eth_subscribe

குறிப்பிட்ட நிகழ்வுகளுக்குப் புதிய சந்தாவை உருவாக்குகிறது. eth_subscribe பற்றி மேலும் அறிக (opens in a new tab).

அளவுருக்கள்

  1. சந்தா வகைகள்
  2. விருப்ப அளவுருக்கள்

முதல் வாதம் எந்த வகையான நிகழ்வைக் கவனிக்க வேண்டும் என்பதைக் குறிப்பிடுகிறது. இரண்டாவது வாதம் முதல் வாதத்தைப் பொறுத்து கூடுதல் விருப்பங்களைக் கொண்டுள்ளது. வெவ்வேறு விளக்க வகைகள், அவற்றின் விருப்பங்கள் மற்றும் அவற்றின் நிகழ்வு பேலோடுகள் கீழே விவரிக்கப்பட்டுள்ளன.

முடிவுகள்

சந்தா ஐடி: இந்த ஐடி பெறப்பட்ட எந்த நிகழ்வுகளுடனும் இணைக்கப்படும், மேலும் eth_unsubscribe-ஐப் பயன்படுத்தி சந்தாவை ரத்து செய்யவும் இதைப் பயன்படுத்தலாம்.

சந்தா நிகழ்வுகள்

சந்தா செயலில் இருக்கும்போது, பின்வரும் புலங்களைக் கொண்ட பொருள்களாக இருக்கும் நிகழ்வுகளைப் பெறுவீர்கள்:

  • jsonrpc: எப்போதும் "2.0"
  • method: எப்போதும் "eth_subscription"
  • params: பின்வரும் புலங்களைக் கொண்ட ஒரு பொருள்:
    • subscription: இந்தச் சந்தாவை உருவாக்கிய eth_subscribe அழைப்பால் வழங்கப்பட்ட சந்தா ஐடி.
    • result: சந்தாவின் வகையைப் பொறுத்து உள்ளடக்கங்கள் மாறுபடும் ஒரு பொருள்.

சந்தா வகைகள்

  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. பின்வரும் புலங்களைக் கொண்ட ஒரு பொருள்:
    • 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"]}]}
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. சந்தா ஐடி, முன்பு eth_subscribe அழைப்பிலிருந்து வழங்கப்பட்டது.

முடிவுகள்

சந்தா வெற்றிகரமாக ரத்து செய்யப்பட்டால் true, அல்லது கொடுக்கப்பட்ட ஐடியுடன் எந்தச் சந்தாவும் இல்லை என்றால் 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}

இலவசமாக Alchemy-இல் பதிவு செய்யுங்கள் (opens in a new tab), எங்கள் ஆவணங்களைச் (opens in a new tab) சரிபார்க்கவும், மேலும் சமீபத்திய செய்திகளுக்கு, Twitter (opens in a new tab)-இல் எங்களைப் பின்தொடரவும்.

பக்கம் கடைசியாகப் புதுப்பிக்கப்பட்டது: 3 மார்ச், 2026

இந்த வழிகாட்டி பயனுள்ளதாக இருந்ததா?