| | |
| | | private static final String[] INST_IDS = { |
| | | "BTC-USDT", "ETH-USDT", "XRP-USDT", "LTC-USDT", "BCH-USDT", "ETC-USDT" |
| | | }; |
| | | //BTC-USDT-SWAP |
| | | private static final String[] INST_IDS_INTEREST = { |
| | | "BTC-USDT-SWAP", "ETH-USDT-SWAP", "XRP-USDT-SWAP", "LTC-USDT-SWAP", "BCH-USDT-SWAP", "ETC-USDT-SWAP" |
| | | }; |
| | | |
| | | // 心跳超时时间(秒),小于30秒 |
| | | private static final int HEARTBEAT_TIMEOUT = 10; |
| | |
| | | subscribeMsg.put("op", "subscribe"); |
| | | |
| | | JSONArray argsArray = new JSONArray(); |
| | | for (String instId : INST_IDS) { |
| | | for (String instId : INST_IDS_INTEREST) { |
| | | JSONObject arg = new JSONObject(); |
| | | arg.put("channel", CHANNEL_OPEN_INTEREST); |
| | | arg.put("instId", instId); |
| | |
| | | */ |
| | | private void handleWebSocketMessage(String message) { |
| | | try { |
| | | |
| | | if ("pong".equals(message)) { |
| | | log.debug("{}: 收到心跳响应"); |
| | | cancelPongTimeout(); |
| | | return; |
| | | } |
| | | JSONObject response = JSON.parseObject(message); |
| | | String event = response.getString("event"); |
| | | |
| | |
| | | } else if ("error".equals(event)) { |
| | | log.error("价格订阅错误: code={}, msg={}", |
| | | response.getString("code"), response.getString("msg")); |
| | | } else if ("pong".equals(event)) { |
| | | log.debug("收到pong响应"); |
| | | cancelPongTimeout(); |
| | | } else { |
| | | processPushData(response); |
| | | } |
| | |
| | | String redisKey = "volume:" + buildRedisKey(instId); |
| | | redisUtils.set(redisKey, oiUsd); |
| | | |
| | | String symbol = CoinTypeConvert.okxConvert(instId); |
| | | if (symbol != null) { |
| | | redisUtils.set(CoinTypeConvert.convertToVolumeKey(symbol), oiUsd); |
| | | } |
| | | |
| | | log.debug("更新持仓量: {} = {}, 时间: {}", redisKey, oiUsd, ts); |
| | | } catch (Exception innerEx) { |
| | | log.warn("处理单条价格数据失败", innerEx); |
| | |
| | | private void sendPing() { |
| | | try { |
| | | if (webSocketClient != null && webSocketClient.isOpen()) { |
| | | JSONObject ping = new JSONObject(); |
| | | ping.put("op", "ping"); |
| | | webSocketClient.send(ping.toJSONString()); |
| | | webSocketClient.send("ping"); |
| | | log.debug("发送ping请求"); |
| | | } |
| | | } catch (Exception e) { |