WebSocket API v1/v2 – Suositeltu Python-kirjasto ja käyttöesimerkkejä

Viimeksi päivitetty: 1.4.2025

WebSocket API -rajapintaamme voidaan käyttää millä tahansa WebSocket-yhteensopivalla ohjelmointikielellä (Python, Javascript, C#, Go jne.). Monet ohjelmointikielet tarjoavat WebSocket-kirjastoja, joiden avulla ohjelmoijat voivat käyttää WebSocket-rajapintaa ilman, että heidän tarvitsee ymmärtää WebSocket-protokollan monimutkaisia yksityiskohtia.

Python on yksi esimerkki kielestä, joka tarjoaa monia erilaisia WebSocket-kirjastoja. Miten ohjelmoija siis tietää, mitä kirjastoa käyttää tai miten valittua kirjastoa käytetään mahdollisimman tehokkaasti? Seuraavassa esitellään suosittelemamme Python WebSocket -kirjasto ja annetaan esimerkkejä kirjaston käytöstä eri tilanteissa.

WebSocket Client

Suosittelemamme Python WebSocket -kirjasto on websocket-client-kirjasto. Kirjasto on yhteensopiva sekä Python 2:n että Python 3:n kanssa, mutta uuteen koodiin suosittelemme vain Python 3:n käyttöä, sillä Python 2 on poistumassa käytöstä.

websocket-client-kirjasto voidaan ladata Python Package Indexistä (pypi.org) ja asentaa mukana tulevan setup.py-tiedoston kautta:

  • python setup.py install

tai ladata ja asentaa samanaikaisesti Pythonin vakioasennustyökalun (pip) kautta:

  • pip install websocket-client

Käyttö

WebSocket-asiakaskirjastoa voidaan käyttää synkronisen (estävän) tai asynkronisen (ei-estävän, tapahtumaohjautuvan) WebSocket-asiakkaan luomiseen. Molemmat versiot voivat olla vuorovaikutuksessa rajapintamme kanssa onnistuneesti, joten valinta riippuu toteutuksen erityisvaatimuksista (kuten siitä, onko muita tehtäviä suoritettava rinnakkain).

Esimerkiksi yksinkertainen markkinahintoja seuraava sovellus voisi käyttää synkronista asiakasta, joka vain odottaa uutta markkinadataa ja vertaa markkinahintaa määritettyyn arvoon, kun taas täysimittainen kaupankäyntibotti tarvitsisi asynkronisen asiakkaan, jossa markkinadatasyötteet ovat erillisissä säikeissä (jotta analyysi- ja kaupankäyntitehtävät voivat jatkua rinnakkain).

Seuraavassa on perusesimerkkejä sekä synkronisista että asynkronisista asiakkaista, joita voidaan käyttää lähtökohtana monimutkaisemmalle API-koodille.

Synkroninen WebSocket API -rajapinta

# Tuo WebSocket-asiakaskirjastofrom websocket import create_connection# Yhdistä WebSocket API:han ja tilaa kaupankäyntisyöte pareille XBT/USD ja XRP/USDws = create_connection("wss://ws.kraken.com/")ws.send('{"event":"subscribe", "subscription":{"name":"trade"}, "pair":["XBT/USD","XRP/USD"]}')# Ikuinen silmukka, joka odottaa WebSocket-dataawhile True:   print(ws.recv())

Asynkroninen WebSocket API -rajapinta

# Tuo WebSocket-asiakaskirjasto (ja muut)import websocketimport _threadimport time# Määritä WebSocket-takaisinkutsufunktiotdef 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()# Käynnistä uusi säie WebSocket-rajapintaa varten_thread.start_new_thread(ws_thread, ())# Jatka muita (ei-WebSocket) tehtäviä pääsäikeessäwhile True:    time.sleep(5)    print("Main thread: %d" % time.time())

Täydelliset tiedot ja ohjeet WebSocket-asiakaskirjastolle ovat saatavilla kirjaston koodiarkistosta.

Tarvitsetko lisää apua?