WebSocket API v1/v2 - 推薦的 Python 程式庫和使用範例

上次更新時間: 2025年4月1日

我們的 WebSocket API 可透過任何支援 WebSocket 的程式語言(Python、Javascript、C#、Go 等)存取。許多程式語言都提供 WebSocket 程式庫,讓程式設計師無需了解 WebSocket 協定的複雜細節即可使用 WebSocket 介面。

Python 就是一個提供許多不同 WebSocket 程式庫的例子,那麼程式設計師如何知道該使用哪個程式庫,或者如何最有效地使用他們選擇的程式庫呢?以下提供我們推薦的 Python WebSocket 程式庫,並提供一些在不同情境下使用該程式庫的範例。

WebSocket 用戶端

我們推薦的 Python WebSocket 程式庫是 websocket-client 程式庫。該程式庫與 Python 2 和 Python 3 均相容,但對於新程式碼,我們建議僅使用 Python 3,因為 Python 2 正在逐步淘汰。

websocket-client 程式庫可從 Python 套件索引 (pypi.org) 下載,並透過隨附的 setup.py 檔案安裝:

  • python setup.py install

或透過標準 Python 安裝工具 (pip) 同時下載並安裝:

  • pip install websocket-client

用法

WebSocket 用戶端程式庫可用於建立同步(阻塞式)WebSocket 用戶端或非同步(非阻塞式、事件驅動)用戶端。這兩個版本都可以成功地與我們的 API 互動,因此選擇將取決於實作的具體要求(例如是否需要同時執行其他任務)。

例如,一個簡單的市場價格監控應用程式可以使用同步用戶端,它只需等待新的市場數據並將市場價格與指定值進行比較,而一個功能齊全的交易機器人則需要使用非同步用戶端,並將市場數據饋送放在單獨的執行緒中(以便分析和交易任務可以並行進行)。

以下是同步和非同步用戶端的基礎範例,可用作更複雜 API 程式碼的起點。

同步 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())

非同步 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())

WebSocket 用戶端程式庫的完整詳細資訊和說明可透過程式庫的程式碼存檔取得。

需要更多幫助?