跳转到内容

请求触发消息与主动推送消息

WebSocket 消息可以分成两类:你发 topic 后返回的消息,以及服务端主动推送的消息。

类型中文说明示例
Solicited请求触发消息,通常由你发送 topic 后产生订阅行情后的初始返回。
Unsolicited主动推送消息,服务端状态变化时发送订单更新、成交更新、系统状态变化。

程序不能假设每条消息都有对应请求。订单成交、系统断线、通知消息可能随时到来。

推荐做法:

  1. 解析消息类型。
  2. 如果能匹配到本地订阅,就更新对应模块。
  3. 如果不能匹配,放进系统消息或通知通道。
  4. 所有未知消息保留原文。
def route_message(message):
topic = message.get("topic")
if topic in active_subscriptions:
update_subscription(topic, message)
elif is_order_or_trade_message(message):
update_order_state(message)
else:
log_unmatched_message(message)

这种设计比“只等某个请求返回”更适合流式系统。