| | |
| | | import com.yami.trading.huobi.websocket.constant.enums.EStockType; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.java_websocket.client.WebSocketClient; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.ApplicationContext; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | |
| | | @Component |
| | | public class WebSocketClientBeanConfig { |
| | | |
| | | // 注入Spring上下文,用于获取原型Bean |
| | | @Autowired |
| | | private ApplicationContext applicationContext; |
| | | |
| | | @Bean |
| | | public Map<String, WebSocketClient> websocketRunClientMap() { |
| | | |
| | | Map<String, WebSocketClient> retMap = new HashMap<>(1); |
| | | try { |
| | | WebsocketRunClient websocketRunClient = new WebsocketRunClient(new URI(EStockType.US.getWsUrl()), EStockType.US); |
| | | // 关键:通过Spring上下文获取WebsocketRunClient实例(而非直接new) |
| | | // 传入参数创建实例(需配合原型作用域) |
| | | WebsocketRunClient websocketRunClient = applicationContext.getBean( |
| | | WebsocketRunClient.class, |
| | | new URI(EStockType.US.getWsUrl()), // 第一个参数:serverUri |
| | | EStockType.US // 第二个参数:eStockType |
| | | ); |
| | | websocketRunClient.connect(); |
| | | websocketRunClient.setConnectionLostTimeout(0); |
| | | startHeartbeatThread(websocketRunClient); |