WebSocket API v1/v2 - Προτεινόμενη βιβλιοθήκη Python και παραδείγματα χρήσης

Τελευταία ενημέρωση: 1 Απρ 2025

Το WebSocket API μας είναι προσβάσιμο μέσω οποιασδήποτε γλώσσας προγραμματισμού με δυνατότητα WebSocket (Python, Javascript, C#, Go, κ.λπ.). Πολλές γλώσσες προγραμματισμού προσφέρουν βιβλιοθήκες WebSocket που επιτρέπουν στους προγραμματιστές να χρησιμοποιούν μια διεπαφή WebSocket χωρίς να κατανοούν τις περίπλοκες λεπτομέρειες του πρωτοκόλλου WebSocket.

Η Python είναι ένα παράδειγμα που προσφέρει πολλές διαφορετικές βιβλιοθήκες WebSocket, οπότε πώς γνωρίζει ένας προγραμματιστής ποια βιβλιοθήκη να χρησιμοποιήσει ή πώς να χρησιμοποιήσει την επιλεγμένη βιβλιοθήκη του με τη μέγιστη αποτελεσματικότητα. Το παρακάτω παρέχει την προτεινόμενη βιβλιοθήκη Python WebSocket και δίνει μερικά παραδείγματα για το πώς να χρησιμοποιήσετε τη βιβλιοθήκη σε διαφορετικά σενάρια.

Πελάτης WebSocket

Η προτεινόμενη βιβλιοθήκη Python WebSocket είναι η βιβλιοθήκη websocket-client. Η βιβλιοθήκη είναι συμβατή τόσο με την Python 2 όσο και με την Python 3, αλλά για νέο κώδικα συνιστούμε να χρησιμοποιείτε μόνο την Python 3, καθώς η Python 2 βρίσκεται σε διαδικασία κατάργησης.

Η βιβλιοθήκη websocket-client μπορεί να ληφθεί από το Python Package Index (pypi.org) και να εγκατασταθεί μέσω του συμπεριλαμβανόμενου αρχείου setup.py:

  • python setup.py install

ή να ληφθεί και να εγκατασταθεί ταυτόχρονα μέσω του τυπικού εργαλείου εγκατάστασης Python (pip):

  • pip install websocket-client

Χρήση

Η βιβλιοθήκη πελάτη WebSocket μπορεί να χρησιμοποιηθεί για τη δημιουργία ενός σύγχρονου (blocking) πελάτη WebSocket ή ενός ασύγχρονου (non blocking, event driven) πελάτη. Και οι δύο εκδόσεις μπορούν να αλληλεπιδράσουν επιτυχώς με το API μας, οπότε η επιλογή θα εξαρτηθεί από τις συγκεκριμένες απαιτήσεις της υλοποίησης (όπως το αν άλλες εργασίες πρέπει να εκτελεστούν παράλληλα).

Για παράδειγμα, μια απλή εφαρμογή παρακολούθησης τιμών αγοράς θα μπορούσε να χρησιμοποιήσει έναν σύγχρονο πελάτη που απλώς περιμένει νέα δεδομένα αγοράς και συγκρίνει την τιμή αγοράς με μια καθορισμένη τιμή, ενώ ένα πλήρως εξοπλισμένο trading bot θα χρειαζόταν να χρησιμοποιήσει έναν ασύγχρονο πελάτη με τις ροές δεδομένων αγοράς σε ξεχωριστά threads (ώστε οι εργασίες ανάλυσης και trading να μπορούν να συνεχιστούν παράλληλα).

Ακολουθούν βασικά παραδείγματα τόσο σύγχρονων όσο και ασύγχρονων πελατών, τα οποία μπορούν να χρησιμοποιηθούν ως σημείο εκκίνησης για πιο σύνθετο κώδικα API.

Σύγχρονη διεπαφή WebSocket 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())

Ασύγχρονη διεπαφή WebSocket 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())

Πλήρεις λεπτομέρειες και οδηγίες για τη βιβλιοθήκη πελάτη WebSocket είναι διαθέσιμες μέσω του αρχείου κώδικα της βιβλιοθήκης.

Χρειάζεστε περισσότερη βοήθεια;