| | |
| | | |
| | | /** |
| | | * WebSocket 频道处理器接口。 |
| | | * 每个 Gate 频道(K线/仓位/平仓)对应一个实现类, |
| | | * 负责该频道的订阅、取消订阅、消息处理。 |
| | | * |
| | | * <p>每个 Gate 频道对应一个实现类。新增频道只需实现此接口, |
| | | * 然后通过 {@code GateKlineWebSocketClient.addChannelHandler()} 注册即可。 |
| | | * |
| | | * <h3>实现类</h3> |
| | | * <ul> |
| | | * <li>{@code CandlestickChannelHandler} — 公开频道,K 线数据</li> |
| | | * <li>{@code AbstractPrivateChannelHandler} — 私有频道抽象基类(签名+认证)</li> |
| | | * <li>{@code PositionsChannelHandler} — 私有频道,仓位更新</li> |
| | | * <li>{@code PositionClosesChannelHandler} — 私有频道,平仓推送</li> |
| | | * </ul> |
| | | * |
| | | * <h3>路由机制</h3> |
| | | * {@code handleMessage()} 返回 {@code true} 表示消息已被该 handler 处理, |
| | | * 路由循环会停止遍历。返回 {@code false} 表示不匹配(channel 名不相等)。 |
| | | * |
| | | * @author Administrator |
| | | */ |
| | | public interface GateChannelHandler { |
| | | |
| | | /** |
| | | * 频道名称,如 "futures.candlesticks" |
| | | */ |
| | | /** 频道名称,如 {@code "futures.candlesticks"} */ |
| | | String getChannelName(); |
| | | |
| | | /** |
| | | * 发送订阅请求 |
| | | */ |
| | | /** 发送订阅请求 */ |
| | | void subscribe(WebSocketClient ws); |
| | | |
| | | /** |
| | | * 发送取消订阅请求 |
| | | */ |
| | | /** 发送取消订阅请求 */ |
| | | void unsubscribe(WebSocketClient ws); |
| | | |
| | | /** |
| | | * 处理频道推送消息 |
| | | * 处理频道推送消息。 |
| | | * |
| | | * @param response WebSocket 推送的 JSON 消息 |
| | | * @return true 表示已处理,false 表示不匹配(频道名不对) |
| | | * @param response WebSocket 推送的完整 JSON |
| | | * @return true 表示已处理(循环停止),false 表示频道不匹配(继续遍历下一个 handler) |
| | | */ |
| | | boolean handleMessage(JSONObject response); |
| | | } |