ওয়েবসকেট API v1/v2 - প্রস্তাবিত পাইথন লাইব্রেরি এবং ব্যবহারের উদাহরণ

সর্বশেষ আপডেট: ১ এপ্রি, ২০২৫

আমাদের WebSocket API যে কোনো ওয়েবসকেট সক্ষম প্রোগ্রামিং ভাষা (পাইথন, জাভাস্ক্রিপ্ট, সি#, গো, ইত্যাদি) ব্যবহার করে অ্যাক্সেস করা যেতে পারে। অনেক প্রোগ্রামিং ভাষা ওয়েবসকেট লাইব্রেরি অফার করে যা প্রোগ্রামারদের WebSocket প্রোটোকল এর জটিল বিবরণ না বুঝেই একটি ওয়েবসকেট ইন্টারফেস ব্যবহার করতে দেয়।

Python এমন একটি উদাহরণ যা অনেক ভিন্ন WebSocket লাইব্রেরি অফার করে, তাহলে একজন প্রোগ্রামার কীভাবে জানবেন কোন লাইব্রেরি ব্যবহার করতে হবে, বা তাদের নির্বাচিত লাইব্রেরিটি সর্বোত্তম কার্যকারিতার জন্য কীভাবে ব্যবহার করতে হবে। নিম্নলিখিতটি আমাদের প্রস্তাবিত পাইথন ওয়েবসকেট লাইব্রেরি সরবরাহ করে এবং বিভিন্ন পরিস্থিতিতে লাইব্রেরিটি কীভাবে ব্যবহার করতে হয় তার কিছু উদাহরণ দেয়।

ওয়েবসকেট ক্লায়েন্ট

আমাদের প্রস্তাবিত পাইথন ওয়েবসকেট লাইব্রেরি হলো websocket-client লাইব্রেরি। লাইব্রেরিটি পাইথন ২ এবং পাইথন ৩ উভয়ের সাথেই সামঞ্জস্যপূর্ণ, তবে নতুন কোডের জন্য আমরা কেবল পাইথন ৩ ব্যবহার করার পরামর্শ দিই কারণ পাইথন ২ বাতিল হওয়ার প্রক্রিয়ায় রয়েছে।

এই websocket-client লাইব্রেরিটি পাইথন প্যাকেজ ইনডেক্স (pypi.org) থেকে ডাউনলোড করা যেতে পারে এবং অন্তর্ভুক্ত setup.py ফাইলের মাধ্যমে ইনস্টল করা যেতে পারে:

  • python setup.py install

অথবা স্ট্যান্ডার্ড পাইথন ইনস্টলেশন টুল (pip) এর মাধ্যমে একই সাথে ডাউনলোড এবং ইনস্টল করা যেতে পারে:

  • pip install websocket-client

ব্যবহার

ওয়েবসকেট ক্লায়েন্ট লাইব্রেরি একটি সিঙ্ক্রোনাস (ব্লকিং) ওয়েবসকেট ক্লায়েন্ট বা একটি অ্যাসিঙ্ক্রোনাস (নন-ব্লকিং, ইভেন্ট-ড্রাইভেন) ক্লায়েন্ট তৈরি করতে ব্যবহার করা যেতে পারে। উভয় সংস্করণই আমাদের API এর সাথে সফলভাবে ইন্টারঅ্যাক্ট করতে পারে, তাই পছন্দটি বাস্তবায়নের নির্দিষ্ট প্রয়োজনীয়তার উপর নির্ভর করবে (যেমন অন্যান্য কাজগুলি সমান্তরালভাবে ঘটতে হবে কিনা)।

উদাহরণস্বরূপ, একটি সাধারণ বাজার মূল্য পর্যবেক্ষণ অ্যাপ একটি সিঙ্ক্রোনাস ক্লায়েন্ট ব্যবহার করতে সক্ষম হবে যা কেবল নতুন বাজার ডেটার জন্য অপেক্ষা করে এবং বাজার মূল্যকে একটি নির্দিষ্ট মানের সাথে তুলনা করে, যখন একটি পূর্ণাঙ্গ ট্রেডিং বটকে পৃথক থ্রেডে বাজার ডেটা ফিড সহ একটি অ্যাসিঙ্ক্রোনাস ক্লায়েন্ট ব্যবহার করতে হবে (যাতে বিশ্লেষণ এবং ট্রেডিং কাজগুলি সমান্তরালভাবে চলতে পারে)।

নিম্নলিখিতগুলি সিঙ্ক্রোনাস এবং অ্যাসিঙ্ক্রোনাস উভয় ক্লায়েন্টের মৌলিক উদাহরণ, যা আরও জটিল API কোডের জন্য একটি সূচনা পয়েন্ট হিসাবে ব্যবহার করা যেতে পারে।

সিঙ্ক্রোনাস ওয়েবসকেট API ইন্টারফেস

# Import WebSocket client libraryfrom websocket import create_connection# Connect to WebSocket API and subscribe to trade feed for XBT/USD and XRP/USDws = create_connection("wss://ws.kraken.com/")ws.send('{"event":"subscribe", "subscription":{"name":"trade"}, "pair":["XBT/USD","XRP/USD"]}')# Infinite loop waiting for WebSocket datawhile True:   print(ws.recv())

অ্যাসিঙ্ক্রোনাস ওয়েবসকেট API ইন্টারফেস

# Import WebSocket client library (and others)import websocketimport _threadimport time# Define WebSocket callback functionsdef ws_message(ws, message):    print("WebSocket thread: %s" % message)def ws_open(ws):    ws.send('{"event":"subscribe", "subscription":{"name":"trade"}, "pair":["XBT/USD","XRP/USD"]}')def ws_thread(*args):    ws = websocket.WebSocketApp("wss://ws.kraken.com/", on_open = ws_open, on_message = ws_message)    ws.run_forever()# Start a new thread for the WebSocket interface_thread.start_new_thread(ws_thread, ())# Continue other (non WebSocket) tasks in the main threadwhile True:    time.sleep(5)    print("Main thread: %d" % time.time())

ওয়েবসকেট ক্লায়েন্ট লাইব্রেরির সম্পূর্ণ বিবরণ এবং নির্দেশাবলী লাইব্রেরির কোড আর্কাইভ এর মাধ্যমে উপলব্ধ।

আরও সাহায্যের প্রয়োজন?