1
zj
2024-10-29 c8b1fc4dd96f24215cb5ed633a5b5c59c405f910
1
1 files modified
34 ■■■■ changed files
src/main/java/com/nq/ws/USWebsocketRunClient.java 34 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/ws/USWebsocketRunClient.java
@@ -1,5 +1,7 @@
package com.nq.ws;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.nq.enums.EStockType;
@@ -41,25 +43,45 @@
    @Override
    public void onOpen(ServerHandshake serverHandshake) {
        send(("key:"+ eStockType.getStockKey()+":"+eStockType.getContryId()+":v1").getBytes());
        send(("key:"+ eStockType.getStockKey()+":"+eStockType.getContryId()).getBytes());
    }
    @Override
    public void onMessage(String s) {
        try {
            if(!s.equals("pong") && !s.equals("身份验证成功")){
                StockRealTimeBean stockDetailBean =  new Gson().fromJson(s, StockRealTimeBean.class);
                RedisKeyUtil.setCacheRealTimeStock(eStockType,stockDetailBean);
                send(s);
                Map<String, String> stringObjectMap = jsonToMap(s);
                StockRealTimeBean stockRealTimeBean = new StockRealTimeBean();
                stockRealTimeBean.setPid(stringObjectMap.get("Id").toString());
                stockRealTimeBean.setLast(stringObjectMap.get("Last").toString());
                stockRealTimeBean.setBid(stringObjectMap.get("Bid").toString());
                stockRealTimeBean.setAsk(stringObjectMap.get("Ask").toString());
                stockRealTimeBean.setHigh(stringObjectMap.get("High").toString());
                stockRealTimeBean.setLow(stringObjectMap.get("Low").toString());
                stockRealTimeBean.setPc(stringObjectMap.get("Chg").toString());
                stockRealTimeBean.setPcp(stringObjectMap.get("ChgPct").toString()+"%");
                stockRealTimeBean.setTime(stringObjectMap.get("Time").toString());
                ObjectMapper objectMapper = new ObjectMapper();
                try {
                    if(!stockRealTimeBean.getPcp().contains("-")){
                        stockRealTimeBean.setPcp("+"+stringObjectMap.get("ChgPct").toString()+"%");
                    }
                    String json = objectMapper.writeValueAsString(stockRealTimeBean);
                    RedisKeyUtil.setCacheRealTimeStock(eStockType,stockRealTimeBean);
                    send(json);
                } catch (
                        JsonProcessingException e) {
                    throw new RuntimeException(e);
                }
            }
        }catch (Exception e){
            log.error("ws 消息接收错误:"+s);
        }
    }
    public static Map<String, Object> jsonToMap(String json) {
    public static Map<String, String> jsonToMap(String json) {
        Gson gson = new Gson();
        Type type = new TypeToken<Map<String, Object>>(){}.getType();
        Type type = new TypeToken<Map<String, String>>(){}.getType();
        return gson.fromJson(json, type);
    }