| | |
| | | @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); |
| | | } |
| | | } |
| | | } |