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

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

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

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

 (புதிய தாவலில் திறக்கப்படும்)WebSockets மற்றும் HTTP

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

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

Alchemy Web3 (புதிய தாவலில் திறக்கப்படும்) எந்த உள்ளமைவும் தேவையில்லாமல் WebSocket தோல்விகள் மற்றும் மறுமுயற்சிகளைக் கையாளுவதை தானாகவே சேர்க்கிறது.

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

WebSockets-ஐச் சோதிப்பதற்கான எளிதான வழி, wscat (புதிய தாவலில் திறக்கப்படும்) போன்ற WebSocket கோரிக்கைகளைச் செய்வதற்கான கட்டளை வரி கருவியை நிறுவுவதாகும். wscat-ஐப் பயன்படுத்தி, நீங்கள் பின்வருமாறு கோரிக்கைகளை அனுப்பலாம்:

குறிப்பு: உங்களிடம் Alchemy கணக்கு இருந்தால், demo என்பதை உங்கள் சொந்த API திறவுகோல் மூலம் மாற்றலாம். இலவச Alchemy கணக்கிற்கு இங்கே பதிவு செய்யவும்! (புதிய தாவலில் திறக்கப்படும்)

wscat -c wss://eth-mainnet.ws.alchemyapi.io/ws/demo

>  {"jsonrpc":  "2.0", "id": 0, "method":  "eth_gasPrice"}

<  {"jsonrpc":  "2.0", "result":  "0xb2d05e00", "id": 0}

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

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

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

Web3 உடன்

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

const web3 = new Web3("wss://eth-mainnet.ws.alchemyapi.io/ws/your-api-key")

web3.eth.getBlockNumber().then(console.log) // -> 7946893

சந்தா API

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

eth_subscribe

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

அளவுருக்கள் (Parameters)

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

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

திருப்பியளிப்பவை (Returns)

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

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

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

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

சந்தா வகைகள்

  1. alchemy_newFullPendingTransactions

நிலுவையில் உள்ள நிலையில் சேர்க்கப்படும் அனைத்துப் பரிவர்த்தனைகளுக்கான பரிவர்த்தனை தகவலைத் திருப்பியளிக்கிறது. இந்தச் சந்தா வகையானது, நிலையான Web3 அழைப்பான web3.eth.subscribe("pendingTransactions")-ஐப் போலவே நிலுவையில் உள்ள பரிவர்த்தனைகளுக்குக் குழுசேர்கிறது, ஆனால் இது பரிவர்த்தனை ஹாஷ்களுக்குப் பதிலாக முழுப் பரிவர்த்தனை தகவலை வெளியிடுகிறது என்பதில் வேறுபடுகிறது.

எடுத்துக்காட்டு:

  1. newHeads

சங்கிலி மறுசீரமைப்பின் போது உட்பட, சங்கிலியில் புதிய தலைப்பு (header) சேர்க்கப்படும் எந்த நேரத்திலும் ஒரு நிகழ்வை வெளியிடுகிறது.

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

எடுத்துக்காட்டு:

  1. logs

குறிப்பிட்ட வடிகட்டி அளவுகோல்களுடன் பொருந்தக்கூடிய புதிதாகச் சேர்க்கப்பட்ட தொகுதிகளின் ஒரு பகுதியாக இருக்கும் பதிவுகளை (logs) வெளியிடுகிறது.

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

அளவுருக்கள்

  1. பின்வரும் புலங்களைக் கொண்ட ஒரு பொருள்:
    • address (விருப்பத்திற்குரியது): ஒரு முகவரியைக் குறிக்கும் சரம் (string) அல்லது அத்தகைய சரங்களின் வரிசை (array).
      • இந்த முகவரிகளில் ஒன்றிலிருந்து உருவாக்கப்பட்ட பதிவுகள் மட்டுமே வெளியிடப்படும்.
    • topics: தலைப்புக் குறிப்பான்களின் வரிசை.
      • ஒவ்வொரு தலைப்புக் குறிப்பானும் null, ஒரு தலைப்பைக் குறிக்கும் சரம் அல்லது சரங்களின் வரிசையாக இருக்கும்.
      • வரிசையில் null ஆக இல்லாத ஒவ்வொரு நிலையும், அந்த நிலையில் கொடுக்கப்பட்ட தலைப்புகளில் ஒன்றைக் கொண்டவர்களுக்கு மட்டுமே வெளியிடப்பட்ட பதிவுகளைக் கட்டுப்படுத்துகிறது.

தலைப்புக் குறிப்பீடுகளின் சில எடுத்துக்காட்டுகள்:

  • []: எந்தத் தலைப்புகளும் அனுமதிக்கப்படும்.
  • [A]: முதல் நிலையில் A (மற்றும் அதற்குப் பிறகு எதுவும்).
  • [null, B]: முதல் நிலையில் எதுவும் மற்றும் இரண்டாவது நிலையில் B (மற்றும் அதற்குப் பிறகு எதுவும்).
  • [A, B]: முதல் நிலையில் A மற்றும் இரண்டாவது நிலையில் B (மற்றும் அதற்குப் பிறகு எதுவும்).
  • [[A, B], [A, B]]: முதல் நிலையில் (A அல்லது B) மற்றும் இரண்டாவது நிலையில் (A அல்லது B) (மற்றும் அதற்குப் பிறகு எதுவும்).

எடுத்துக்காட்டு:

eth_unsubscribe

மேலும் நிகழ்வுகள் எதுவும் அனுப்பப்படாதவாறு ஏற்கனவே உள்ள சந்தாவை ரத்து செய்கிறது.

அளவுருக்கள்

  1. சந்தா ID, முன்பு eth_subscribe அழைப்பிலிருந்து திருப்பியளிக்கப்பட்டபடி.

திருப்பியளிப்பவை

சந்தா வெற்றிகரமாக ரத்து செய்யப்பட்டால் true, அல்லது கொடுக்கப்பட்ட ID-உடன் எந்தச் சந்தாவும் இல்லை என்றால் false.

எடுத்துக்காட்டு:

கோரிக்கை

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

முடிவு

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": true
}

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