WebSocket API v1/v2 - Biblioteca Python recomendada e exemplos de utilização

Última atualização: 1/04/2025

A nossa WebSocket API pode ser acedida através de qualquer linguagem de programação compatível com WebSocket (Python, Javascript, C#, Go, etc.). Muitas linguagens de programação oferecem bibliotecas WebSocket que permitem aos programadores usar uma interface WebSocket sem compreender os detalhes intrincados do protocolo WebSocket.

Python é um exemplo que oferece muitas bibliotecas WebSocket diferentes, então como é que um programador sabe qual biblioteca usar, ou como usar a biblioteca escolhida para a melhor eficácia. O seguinte fornece a nossa biblioteca Python WebSocket recomendada e apresenta alguns exemplos de como usar a biblioteca em diferentes cenários.

Cliente WebSocket

A nossa biblioteca Python WebSocket recomendada é a biblioteca websocket-client. A biblioteca é compatível com Python 2 e Python 3, mas para código novo, recomendamos usar apenas Python 3, uma vez que o Python 2 está em processo de descontinuação.

A biblioteca websocket-client pode ser descarregada do Python Package Index (pypi.org) e instalada através do ficheiro setup.py incluído:

  • python setup.py install

ou descarregada e instalada simultaneamente através da ferramenta de instalação padrão do Python (pip):

  • pip install websocket-client

Utilização

A biblioteca cliente WebSocket pode ser usada para criar um cliente WebSocket síncrono (bloqueante) ou um cliente assíncrono (não bloqueante, orientado a eventos). Ambas as versões podem interagir com a nossa API com sucesso, portanto, a escolha dependerá dos requisitos específicos da implementação (como se outras tarefas precisam de ocorrer em paralelo).

Por exemplo, uma aplicação simples de monitorização de preços de mercado poderia usar um cliente síncrono que simplesmente esperasse por novos dados de mercado e comparasse o preço de mercado com um valor especificado, enquanto um bot de negociação completo precisaria de usar um cliente assíncrono com os feeds de dados de mercado em threads separadas (para que as tarefas de análise e negociação pudessem continuar em paralelo).

Os seguintes são exemplos básicos de clientes síncronos e assíncronos, que podem ser usados como ponto de partida para código API mais complexo.

Interface Síncrona da 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())

Interface Assíncrona da 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())

Detalhes completos e instruções para a biblioteca cliente WebSocket estão disponíveis através do arquivo de código da biblioteca.

Precisa de mais ajuda?