WebSocket API v1/v2 – Rekommenderat Python-bibliotek och användningsexempel

Senast uppdaterad: 1 apr. 2025

Vårt WebSocket API kan nås via vilket programmeringsspråk som helst som är kompatibelt med WebSocket (Python, Javascript, C#, Go, etc.). Många programmeringsspråk erbjuder WebSocket-bibliotek som gör det möjligt för programmerare att använda ett WebSocket-gränssnitt utan att förstå de intrikata detaljerna i WebSocket-protokollet.

Python är ett exempel som erbjuder många olika WebSocket-bibliotek, så hur vet en programmerare vilket bibliotek som ska användas, eller hur man använder det valda biblioteket på bästa sätt. Följande ger vårt rekommenderade Python WebSocket-bibliotek och ger några exempel på hur man använder biblioteket i olika scenarier.

WebSocket-klient

Vårt rekommenderade Python WebSocket-bibliotek är websocket-client-biblioteket. Biblioteket är kompatibelt med både Python 2 och Python 3, men för ny kod rekommenderar vi att endast använda Python 3 då Python 2 håller på att avvecklas.

websocket-client-biblioteket kan laddas ner från Python Package Index (pypi.org) och installeras via den inkluderade setup.py-filen:

  • python setup.py install

eller laddas ner och installeras samtidigt via det standardiserade Python-installationsverktyget (pip):

  • pip install websocket-client

Användning

WebSocket-klientbiblioteket kan användas för att skapa en synkron (blockerande) WebSocket-klient eller en asynkron (icke-blockerande, händelsestyrd) klient. Båda versionerna kan interagera med vårt API framgångsrikt, så valet beror på de specifika kraven för implementeringen (till exempel om andra uppgifter behövde ske parallellt).

Till exempel skulle en enkel app för marknadsprisövervakning kunna använda en synkron klient som helt enkelt väntade på nya marknadsdata och jämförde marknadspriset med ett specificerat värde, medan en fullfjädrad handelsbot skulle behöva använda en asynkron klient med marknadsdataflöden i separata trådar (så att analys- och handelsuppgifterna kunde fortsätta parallellt).

Följande är grundläggande exempel på både synkrona och asynkrona klienter, som kan användas som en utgångspunkt för mer komplex API-kod.

Synkront WebSocket API-gränssnitt

# 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())

Asynkront WebSocket API-gränssnitt

# 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())

Fullständiga detaljer och instruktioner för WebSocket-klientbiblioteket finns tillgängliga via bibliotekets kodarkiv.

Behöver du mer hjälp?