WebSocket API v1/v2 – Doporučená knihovna Python a příklady použití

Naposledy aktualizováno: 1. 4. 2025

K našemu API WebSocket lze přistupovat pomocí libovolného programovacího jazyka podporujícího WebSocket (Python, Javascript, C#, Go atd.). Mnoho programovacích jazyků nabízí knihovny WebSocket, které programátorům umožňují používat rozhraní WebSocket, aniž by museli rozumět složitým detailům protokolu WebSocket.

Python je jedním z příkladů, který nabízí mnoho různých knihoven WebSocket, takže jak programátor ví, kterou knihovnu použít, nebo jak ji použít co nejefektivněji. Následující text uvádí naši doporučenou knihovnu Python WebSocket a poskytuje několik příkladů, jak knihovnu používat v různých scénářích.

WebSocket klient

Naše doporučená knihovna Python WebSocket je knihovna websocket-client. Knihovna je kompatibilní s Pythonem 2 i Pythonem 3, ale pro nový kód doporučujeme používat pouze Python 3, protože Python 2 je v procesu ukončování podpory.

Knihovnu websocket-client lze stáhnout z Python Package Index (pypi.org) a nainstalovat pomocí přiloženého souboru setup.py:

  • python setup.py install

nebo stažena a nainstalována současně pomocí standardního instalačního nástroje Pythonu (pip):

  • pip install websocket-client

Použití

Knihovnu klienta WebSocket lze použít k vytvoření synchronního (blokujícího) klienta WebSocket nebo asynchronního (neblokujícího, událostmi řízeného) klienta. Obě verze mohou úspěšně komunikovat s naším API, takže volba závisí na konkrétních požadavcích implementace (například zda je potřeba, aby jiné úkoly probíhaly paralelně).

Například jednoduchá aplikace pro sledování tržních cen by mohla použít synchronního klienta, který jednoduše čeká na nová tržní data a porovnává tržní cenu s určenou hodnotou, zatímco plně vybavený obchodní bot by musel použít asynchronního klienta s datovými kanály trhu v samostatných vláknech (aby analytické a obchodní úkoly mohly pokračovat paralelně).

Následující text obsahuje základní příklady synchronních i asynchronních klientů, které lze použít jako výchozí bod pro složitější kód API.

Synchronní rozhraní 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())

Asynchronní rozhraní 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())

Úplné podrobnosti a pokyny pro knihovnu klienta WebSocket jsou k dispozici v archivu kódu knihovny.

Potřebujete další pomoc?