WebSocket API v1/v2 - ไลบรารี Python ที่แนะนำและตัวอย่างการใช้งาน

อัปเดตล่าสุด: 1 เม.ย. 2568

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 Package Index (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 มีอยู่ใน คลังโค้ดของไลบรารี

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่