|  |  | 
 |  |  | @ServerEndpoint(value = "/trade/market") | 
 |  |  | @Component | 
 |  |  | public class TradePlateSendWebSocket { | 
 |  |  |     @Resource | 
 |  |  |     RedisUtils redisUtils; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 记录当前在线连接数 | 
 |  |  | 
 |  |  |                 stringSessionMap.put(session.getId(), session); | 
 |  |  |                 klineClients.put(key, stringSessionMap); | 
 |  |  |             } | 
 |  |  |             // 给他发送最新K线 TODO | 
 |  |  |             String newKline = "NEW_KINE_{}"; | 
 |  |  |             key = StrUtil.format(newKline, symbol); | 
 |  |  |             RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class); | 
 |  |  |             Object o = redisUtils.get(key); | 
 |  |  |             Map<String, Candlestick> currentKlineMap = (Map<String, Candlestick>) o; | 
 |  |  |             String ch = "market.{}.kline.{}"; | 
 |  |  |             String chKey = period; | 
 |  |  |             if (period.equals("60min")) { | 
 |  |  |                 chKey = "1hour"; | 
 |  |  |             } | 
 |  |  |             if(currentKlineMap!=null && currentKlineMap.containsKey(chKey)){ | 
 |  |  |                 Candlestick value = currentKlineMap.get(chKey); | 
 |  |  |                 // 转换 | 
 |  |  |                 NewCandlestick newCandlestick = new NewCandlestick(); | 
 |  |  |                 String nekkusdt = split[1]; | 
 |  |  |                 ch = StrUtil.format(ch, nekkusdt, period); | 
 |  |  |                 newCandlestick.setCh(ch); | 
 |  |  |                 CandlestickModel model = new CandlestickModel(); | 
 |  |  |                 model.setVol(value.getVolume()); | 
 |  |  |                 model.setLow(value.getLow()); | 
 |  |  |                 model.setOpen(value.getOpen()); | 
 |  |  |                 model.setHigh(value.getHigh()); | 
 |  |  |                 model.setCount(value.getCount()); | 
 |  |  |                 model.setAmount(value.getAmount()); | 
 |  |  |                 model.setId(value.getTimestamp() / 1000); | 
 |  |  |                 model.setTimestamp(value.getTimestamp() / 1000); | 
 |  |  |                 model.setClose(value.getClose()); | 
 |  |  |                 newCandlestick.setTick(model); | 
 |  |  |                 sendMessageKlineNow(JSONObject.toJSONString(newCandlestick), session); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 取消订阅 | 
 |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 发送历史K线 | 
 |  |  |      * | 
 |  |  |      * @param message, toSession | 
 |  |  |      * @return void | 
 |  |  |      */ | 
 |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 发送最新K线 | 
 |  |  |      * | 
 |  |  |      * @param symbol, period, message, fromSession | 
 |  |  |      * @return void | 
 |  |  |      */ | 
 |  |  | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public void sendMessageKlineNow(String message, Session toSession) { | 
 |  |  |         boolean open = toSession.isOpen(); | 
 |  |  |         if (open) { | 
 |  |  |             toSession.getAsyncRemote().sendText(message); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |