| | |
| | | //package com.nq.ws; |
| | | // |
| | | // |
| | | //import com.nq.enums.EStockType; |
| | | //import com.nq.utils.PropertiesUtil; |
| | | //import lombok.extern.slf4j.Slf4j; |
| | | //import org.java_websocket.client.WebSocketClient; |
| | | //import org.springframework.context.annotation.Bean; |
| | | //import org.springframework.context.annotation.Configuration; |
| | | // |
| | | //import java.net.URI; |
| | | //import java.util.HashMap; |
| | | //import java.util.Map; |
| | | // |
| | | //@Slf4j |
| | | //@Configuration |
| | | //public class WebSocketClientBeanConfig { |
| | | // |
| | | // |
| | | // @Bean |
| | | // public Map<String, WebSocketClient> websocketRunClientMap() { |
| | | // |
| | | // Map<String, WebSocketClient> retMap = new HashMap<>(2); |
| | | // try { |
| | | // WebsocketRunClient websocketRunClient = new WebsocketRunClient(new URI("wss://ws.durocaspitall.com/websocket-server"),EStockType.IN); |
| | | // websocketRunClient.connect(); |
| | | // websocketRunClient.setConnectionLostTimeout(0); |
| | | // new Thread(() -> { |
| | | // while (true) { |
| | | // try { |
| | | // Thread.sleep(8000); |
| | | // websocketRunClient.send("heartbeat".getBytes()); |
| | | // } catch (Exception e) { |
| | | // websocketRunClient.reconnect(); |
| | | // websocketRunClient.setConnectionLostTimeout(0); |
| | | // } |
| | | // } |
| | | // }).start(); |
| | | // } catch (Exception e) { |
| | | // } |
| | | // |
| | | // return retMap; |
| | | // } |
| | | // |
| | | // |
| | | //} |
| | | /* |
| | | package com.nq.ws; |
| | | |
| | | import com.nq.enums.EStockType; |
| | | import com.nq.utils.PropertiesUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.java_websocket.client.WebSocketClient; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | import java.net.URI; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | @Slf4j |
| | | @Configuration |
| | | public class WebSocketClientBeanConfig { |
| | | |
| | | |
| | | @Bean |
| | | public Map<String, WebSocketClient> websocketRunClientMap() { |
| | | |
| | | Map<String, WebSocketClient> retMap = new HashMap<>(2); |
| | | try { |
| | | WebsocketRunClient hkWebsocketRunClient = new WebsocketRunClient(new URI(PropertiesUtil.getProperty("HK_WS_URL")), EStockType.HK); |
| | | hkWebsocketRunClient.connect(); |
| | | hkWebsocketRunClient.setConnectionLostTimeout(0); |
| | | startHeartbeatThread(hkWebsocketRunClient); |
| | | retMap.put(EStockType.HK.getStockKey(), hkWebsocketRunClient); |
| | | } catch (Exception e) { |
| | | log.error("hkWebsocketRunClient 异常: {}", e.getMessage()); |
| | | } |
| | | try { |
| | | TWWebsocketRunClient twWebsocketRunClient = new TWWebsocketRunClient(new URI(PropertiesUtil.getProperty("TW_WS_URL")), EStockType.TW); |
| | | twWebsocketRunClient.connect(); |
| | | twWebsocketRunClient.setConnectionLostTimeout(0); |
| | | startHeartbeatThread(twWebsocketRunClient); |
| | | retMap.put(EStockType.TW.getStockKey(), twWebsocketRunClient); |
| | | } catch (Exception e) { |
| | | log.error("twWebsocketRunClient 异常: {}", 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 { |
| | | client.reconnect(); |
| | | client.setConnectionLostTimeout(0); |
| | | } catch (Exception re) { |
| | | log.error("重连失败: {}", re.getMessage()); |
| | | } |
| | | } |
| | | } |
| | | }).start(); |
| | | } |
| | | |
| | | |
| | | } |
| | | */ |