两类推送,各管一摊
API 集成里’让平台主动告诉你事情发生了’的机制主要有两类。WebSocket 是一条保持打开的长连接,平台把行情增量、你的订单状态变化持续推过来,适合高频、低延迟需求的场景;Webhook 是平台在事件发生时向你的服务器回调地址发一次性 HTTP 请求,常见于入金到账、提币状态变化、法币订单这类低频但重要的业务事件(各平台提供的通道类型、事件目录和订阅方式差异大,接入前以 API 文档逐条核对,未提供某类通道的平台只能回退轮询)。两者的共同前提:行情推送通常公开可得,而涉及你账户的订单与资金事件推送必须经过密钥授权——这一层权限怎么配,决定事故大小。
权限配置的底线
承接 API 密钥的权限分离逻辑,推送场景的底线是:能收事件的最小密钥不等于能下单的密钥——只读密钥即可订阅账户事件与私有频道,交易密钥与推送消费分离部署;Webhook 的回调地址在你服务器上,收到消息后必须验签再处理,未验签直接执行逻辑等于给你的服务器开了一条无钥匙后门,伪造回调的剧本在真实世界发生过;回调地址只处理’通知’,不要把它当数据源——事件正文可能截断或乱序,收到’订单已成交’的正确动作是拿订单号回查 REST 接口拿权威状态,而不是按事件正文更新账本。密钥泄露场景在推送语境下多一重风险:被窃密钥即使只读,实时事件流也泄露你的策略行为,收紧 IP 白名单是标配。
工程三原则
接入后真正决定稳定性的是三个处理原则。断线重连是义务不是选项:长连接会因网络抖动、平台维护、心跳超时断开,重连后不能假设没错过事件——标准姿势是重连后立即用 REST 拉一次全量挂单与持仓快照做对账,把断线窗口里的事件缺口用状态快照补平。消息乱序是常态:推送不保证按事件发生顺序到达(成交先于挂单成功到达并不罕见),处理逻辑必须按版本号或时间戳幂等去重,永远以’回查到的当前状态’为最终真相而不是消息序列。数据面与控制面分离:WebSocket 的行情断供不应该冻结你的下单能力——两条通道、两套超时、一个降级开关,极端行情里行情通道被消息洪流压垮的时刻,恰恰是最需要交易通道活着的时刻。
平台侧质量怎么观察
不同平台的推送实现质量差异要主动测量而不是听口碑:延迟——本地时钟记录的事件时间戳与交易所时间戳差值分布,高峰时段的尾部延迟比平均值诚实;完整性——重连对账发现的缺事件频率,偶发一两帧与系统性丢事件是不同等级的问题;限频与配额——推送连接数上限、订阅频道数上限、Webhook 重试策略(失败后重试几次、间隔多久),这些写在文档里的数字决定你的架构上限,属接入前必读项;维护公告——长连接端点的版本迁移与弃用时间表,追文档迁移是接入者的持续成本。
选型的最小决策树
低频业务事件(入金、提币、KYC 状态):Webhook 足够且更省心,把验签和重试处理做对即可。行情驱动型应用:WebSocket 为主、REST 快照对账为辅是标准架构。只有一台个人机器、不想维护公网回调服务:安全的折中是定时轮询关键状态接口,牺牲时效换简单——但频率要尊重接口的限频规则。任何规模的策略系统:从第一天就把推送密钥设成只读加 IP 白名单,事故时你会庆幸这条线切得干净。风险提示:自动化交易存在技术与市场双重风险,推送延迟与丢失可能导致执行偏差,本文是集成机制说明,不构成投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。