| | |
| | | public Map<String, WebSocketClient> websocketRunClientMap() { |
| | | |
| | | Map<String, WebSocketClient> retMap = new HashMap<>(2); |
| | | |
| | | |
| | | |
| | | |
| | | try { |
| | | WebsocketRunClient websocketRunClient = new WebsocketRunClient(new URI(PropertiesUtil.getProperty("US_WS_URL"))); |
| | | websocketRunClient.connect(); |
| | | websocketRunClient.setConnectionLostTimeout(0); |
| | | new Thread(() -> { |
| | | while (true) { |
| | | WebsocketRunClient usWebsocketRunClient = new WebsocketRunClient(new URI(PropertiesUtil.getProperty("US_WS_URL")),EStockType.US); |
| | | usWebsocketRunClient.connect(); |
| | | usWebsocketRunClient.setConnectionLostTimeout(0); |
| | | startHeartbeatThread(usWebsocketRunClient); |
| | | retMap.put(EStockType.US.getStockKey(), usWebsocketRunClient); |
| | | } catch (Exception e) { |
| | | log.error("usWebsocketRunClient 异常: {}", e.getMessage()); |
| | | } |
| | | try { |
| | | MXWebsocketRunClient mxWebsocketRunClient = new MXWebsocketRunClient(new URI(PropertiesUtil.getProperty("MX_WS_URL")),EStockType.MX); |
| | | mxWebsocketRunClient.connect(); |
| | | mxWebsocketRunClient.setConnectionLostTimeout(0); |
| | | startHeartbeatThread(mxWebsocketRunClient); |
| | | retMap.put(EStockType.MX.getStockKey(), mxWebsocketRunClient); |
| | | } catch (Exception e) { |
| | | log.error("mxWebsocketRunClient 异常: {}", e.getMessage()); |
| | | } |
| | | return retMap; |
| | | } |
| | | |
| | | private void startHeartbeatThread(WebSocketClient client) { |
| | | new Thread(() -> { |
| | | while (true) { |
| | | try { |
| | | Thread.sleep(8000); |
| | | if (client.isOpen()) { // 先检查连接状态 |
| | | client.send("heartbeat".getBytes()); |
| | | } else { |
| | | client.reconnect(); |
| | | client.setConnectionLostTimeout(0); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("心跳线程异常, 尝试重连: {}", e.getMessage()); |
| | | try { |
| | | Thread.sleep(8000); |
| | | websocketRunClient.send("heartbeat".getBytes()); |
| | | } catch (Exception e) { |
| | | websocketRunClient.reconnect(); |
| | | websocketRunClient.setConnectionLostTimeout(0); |
| | | client.reconnect(); |
| | | client.setConnectionLostTimeout(0); |
| | | } catch (Exception re) { |
| | | log.error("重连失败: {}", re.getMessage()); |
| | | } |
| | | } |
| | | }).start(); |
| | | retMap.put(EStockType.IN.getStockKey(), websocketRunClient); |
| | | } catch (Exception e) { |
| | | } |
| | | // |
| | | // try { |
| | | // USWebsocketRunClient usWebsocketRunClient = new USWebsocketRunClient(new URI(PropertiesUtil.getProperty("IN_WS_URL"))); |
| | | // usWebsocketRunClient.connect(); |
| | | // usWebsocketRunClient.setConnectionLostTimeout(0); |
| | | // new Thread(() -> { |
| | | // while (true) { |
| | | // try { |
| | | // Thread.sleep(8000); |
| | | // usWebsocketRunClient.send("heartbeat".getBytes()); |
| | | // } catch (Exception e) { |
| | | // usWebsocketRunClient.reconnect(); |
| | | // usWebsocketRunClient.setConnectionLostTimeout(0); |
| | | // } |
| | | // } |
| | | // }).start(); |
| | | // retMap.put(EStockType.US.getStockKey(), usWebsocketRunClient); |
| | | // } catch (Exception e) { |
| | | // } |
| | | |
| | | return retMap; |
| | | } |
| | | }).start(); |
| | | } |
| | | |
| | | |