La nostra API WebSocket è accessibile tramite qualsiasi linguaggio di programmazione compatibile con WebSocket (Python, Javascript, C#, Go e così via). Molti linguaggi di programmazione offrono librerie WebSocket che consentono ai programmatori di utilizzare un'interfaccia WebSocket anche senza comprendere gli intricati dettagli del protocollo WebSocket.
Ad esempio, Python offre molte librerie WebSocket diverse, e per un programmatore non è facile capire quale libreria utilizzare o come usarla nel modo ottimale. Di seguito puoi trovare la libreria WebSocket Python consigliata da noi, con alcuni esempi che mostrano come utilizzarla in diversi scenari.
Client WebSocket
La libreria WebSocket Python consigliata da noi è denominata websocket-client. Questa libreria è compatibile sia con Python 2 che con Python 3, ma per il nuovo codice è consigliabile utilizzare solo Python 3, perché Python 2 sta per essere deprecato.
La libreria websocket-client può essere scaricata dal Python Package Index (pypi.org) e installata tramite il file setup.py incluso:
- python setup.py install
In alternativa, può essere scaricata e installata contemporaneamente tramite lo strumento di installazione Python standard (pip):
- pip install websocket-client
Utilizzo
La libreria client WebSocket può essere utilizzata per creare un client WebSocket sincrono (bloccante) o un client asincrono (non bloccante, basato su eventi). Entrambe le versioni possono interagire correttamente con la nostra API, quindi la scelta dipende dai requisiti specifici dell'implementazione (ad esempio, se occorre eseguire altre attività in parallelo).
Ad esempio, una semplice app di monitoraggio dei prezzi di mercato potrebbe utilizzare un client sincrono che aspetta i nuovi dati di mercato e confronta i prezzi di mercato con un valore specificato, mentre un bot di trading completo può utilizzare un client asincrono con i feed dei dati di mercato in thread separati (in modo che le attività di analisi e trading possano continuare in parallelo).
Di seguito sono riportati alcuni semplici esempi di client sincroni e asincroni, che possono essere utilizzati come punto di partenza per la creazione di codice API più complesso.
Interfaccia sincrona dell'API WebSocket
# 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())
Interfaccia asincrona dell'API WebSocket
# 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())
I dettagli completi e le istruzioni per la libreria client WebSocket sono disponibili tramite l'archivio di codice della libreria.