You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AAX交易所WebSocket获取BTC标记价:跳过初始消息提取指定字段

解决AAX WebSocket标记价提取的KeyError问题

核心思路很简单:处理每条WebSocket消息时,先检查目标字段p是否存在,只处理包含该字段的消息,直接跳过不含p的初始消息即可,不用刻意去数“前两条”(毕竟不同场景下初始消息数量可能变化)。

示例代码(Python)

假设你用的是websocket库,修改消息处理逻辑如下:

import websocket
import json

def on_message(ws, message):
    data = json.loads(message)
    # 先判断字段是否存在,再提取数据
    if 'p' in data:
        mark_price = data['p']
        # 这里可以将mark_price存入全局变量、队列或直接用于后续业务逻辑
        print(f"BTCUSDTFP标记价: {mark_price}")
    # 不含'p'的消息直接跳过,不做任何处理

def on_error(ws, error):
    print(error)

def on_close(ws):
    print("连接关闭")

def on_open(ws):
    # 发送订阅标记价的请求(需符合AAX官方WebSocket协议格式)
    subscribe_cmd = json.dumps({
        "op": "subscribe",
        "args": ["markPrice@BTCUSDTFP"]
    })
    ws.send(subscribe_cmd)

if __name__ == "__main__":
    ws = websocket.WebSocketApp("wss://stream.aax.com/ws",
                                on_open=on_open,
                                on_message=on_message,
                                on_error=on_error,
                                on_close=on_close)
    ws.run_forever()

关键说明

  • 核心判断逻辑if 'p' in data能从根源上避免KeyError,不管初始消息有多少条,只要不含目标字段就直接跳过。
  • 如果用其他语言(比如JavaScript),逻辑完全一致:解析消息后先做字段存在性校验,再取值。比如JS里可以用if ('p' in data)或if (data.p !== undefined)。

内容的提问来源于stack exchange,提问作者user19912573

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 05:45:20