1
zyy3
2025-12-02 d88d0f6ce31efb978de10227f6a12e4cc4843129
1
2 files modified
61 ■■■■ changed files
trading-order-admin/src/main/resources/application-dev.yml 2 ●●● patch | view | raw | blame | history
trading-order-huobi/src/main/java/com/yami/trading/huobi/jsws/WebsocketRunClient.java 59 ●●●● patch | view | raw | blame | history
trading-order-admin/src/main/resources/application-dev.yml
@@ -117,7 +117,7 @@
images.dir: /www/wwwroot/alljys/img
admin_url: https://localhost:8080/admin
web_url: http://localhost:8080/wap/
images_http: https://allimg.sc-easy.com/
images_http: https://allimg.sceazy.com/
email:
  host: smtp.gmail.com
  username: coinzne.com@gmail.com
trading-order-huobi/src/main/java/com/yami/trading/huobi/jsws/WebsocketRunClient.java
@@ -32,19 +32,19 @@
    ItemService itemService;
    public WebsocketRunClient() {
        super(URI.create("wss://ws.jinmanxuan.com/websocket-server"));
        super(URI.create(EStockType.US.wsUrl));
    }
    public WebsocketRunClient(URI serverUri, EStockType eStockType) {
        // 修改为新的WebSocket服务器地址
        super(URI.create("wss://ws.jinmanxuan.com/websocket-server"));
        super(URI.create(eStockType.wsUrl));
        this.eStockType = eStockType;
    }
    @Override
    public void onOpen(ServerHandshake serverHandshake) {
        log.info("WebSocket连接已建立,连接到: wss://ws.jinmanxuan.com/websocket-server");
        log.info("WebSocket连接已建立,连接到: {}", EStockType.US.wsUrl);
        // 发送身份验证消息
        send(("key:"+ eStockType.getStockKey()+":"+eStockType.getContryId()).getBytes());
        Timer heartbeatTimer;
@@ -66,13 +66,28 @@
        if(!s.equals("pong") && !s.equals("身份验证成功")){
            try {
                Map<String, String> stringObjectMap = jsonToMap(s);
                String symbol = stringObjectMap.get("symbol").trim();
                String symbol = stringObjectMap.get("Symbol").trim();
                Item item = itemService.findCaCheBySymbol(symbol);
                if (item == null || !item.getType().equalsIgnoreCase(Item.US_STOCKS)) {
                    return;
                }
                System.out.println(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());
                stockRealTimeBean.setOpen(stringObjectMap.get("Open"));
                stockRealTimeBean.setPrevClose(stringObjectMap.get("PrevClose"));
                stockRealTimeBean.setSymbol(stringObjectMap.get("Symbol"));*/
                Realtime realtime = new Realtime();
                realtime.setUuid(stringObjectMap.get("pid"));
                /*realtime.setUuid(stringObjectMap.get("pid"));
                realtime.setSymbol(stringObjectMap.get("symbol"));
                realtime.setClose(new BigDecimal(stringObjectMap.get("last")).doubleValue());
                realtime.setLow(new BigDecimal(stringObjectMap.get("low")).doubleValue());
@@ -83,10 +98,24 @@
                realtime.setNetChange(new BigDecimal(stringObjectMap.get("pc")).doubleValue());
                realtime.setChangeRatio(parsePercent(stringObjectMap.get("pcp")));
                realtime.setBid(new BigDecimal(stringObjectMap.get("bid")).doubleValue());
                realtime.setAsk(new BigDecimal(stringObjectMap.get("ask")).doubleValue());
                realtime.setAsk(new BigDecimal(stringObjectMap.get("ask")).doubleValue());*/
                realtime.setUuid(stringObjectMap.get("Id"));
                realtime.setSymbol(stringObjectMap.get("Symbol"));
                realtime.setClose(new BigDecimal(stringObjectMap.get("Last")).doubleValue());
                realtime.setLow(new BigDecimal(stringObjectMap.get("Low")).doubleValue());
                realtime.setHigh(new BigDecimal(stringObjectMap.get("High")).doubleValue());
                realtime.setOpen(new BigDecimal(stringObjectMap.get("Open")).doubleValue());
                realtime.setPrevClose(new BigDecimal(stringObjectMap.get("PrevClose")).doubleValue());
                realtime.setTs(Long.valueOf(stringObjectMap.get("Time") + "000"));
                realtime.setNetChange(new BigDecimal(stringObjectMap.get("Chg")).doubleValue());
                realtime.setChangeRatio(new BigDecimal(stringObjectMap.get("ChgPct")).doubleValue());
                realtime.setBid(new BigDecimal(stringObjectMap.get("Bid")).doubleValue());
                realtime.setAsk(new BigDecimal(stringObjectMap.get("Ask")).doubleValue());
                DataCache.putRealtime(realtime.getSymbol(), realtime);
            } catch (Exception e) {
                log.error("处理WebSocket消息时发生错误: {}", e.getMessage(), e);
                log.error("处理WebSocket消息时发生错误: {}", e);
            }
        } else {
            log.info("WebSocket心跳或认证响应: {}", s);
@@ -136,4 +165,20 @@
            throw new IllegalArgumentException("无效的百分比格式:" + percentStr, e);
        }
    }
    public boolean verify(String str) {
        if (str == null) {
            return false;
        }
        if (str.trim().isEmpty()) {
            return false;
        }
        if (str.trim().equals("undefined")) {
            return false;
        }
        if (str.trim().equals("null")) {
            return false;
        }
        return true;
    }
}