请求触发消息与主动推送消息
WebSocket 消息可以分成两类:你发 topic 后返回的消息,以及服务端主动推送的消息。
| 类型 | 中文说明 | 示例 |
|---|---|---|
| Solicited | 请求触发消息,通常由你发送 topic 后产生 | 订阅行情后的初始返回。 |
| Unsolicited | 主动推送消息,服务端状态变化时发送 | 订单更新、成交更新、系统状态变化。 |
为什么要区分
Section titled “为什么要区分”程序不能假设每条消息都有对应请求。订单成交、系统断线、通知消息可能随时到来。
推荐做法:
- 解析消息类型。
- 如果能匹配到本地订阅,就更新对应模块。
- 如果不能匹配,放进系统消息或通知通道。
- 所有未知消息保留原文。
示例处理结构
Section titled “示例处理结构”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)这种设计比“只等某个请求返回”更适合流式系统。