package com.yami.trading.huobi.wss;
|
|
import org.java_websocket.client.WebSocketClient;
|
import org.java_websocket.handshake.ServerHandshake;
|
|
import java.net.URI;
|
import java.util.concurrent.Executors;
|
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.TimeUnit;
|
|
/**
|
* @Author: TG:哪吒出海
|
* @Date: 2025-04-26-3:52
|
* @Description:
|
*/
|
public class JiduWebSocketClient extends WebSocketClient {
|
// 构造方法
|
public JiduWebSocketClient(URI serverUri) {
|
super(serverUri);
|
}
|
|
@Override
|
public void onOpen(ServerHandshake serverHandshake) {
|
System.out.println("极度证券 wss 连接成功!!!");
|
//启动心跳定时任务,间隔10秒发送心跳消息
|
startHeartbeat();
|
}
|
|
@Override
|
public void onMessage(String message) {
|
System.out.println("【极度证券】 收到数据: " + message);
|
}
|
|
@Override
|
public void onClose(int code, String reason, boolean remote) {
|
System.out.println("极度证券 wss 关闭: " + code + " 原因: " + reason);
|
}
|
|
@Override
|
public void onError(Exception ex) {
|
ex.printStackTrace();
|
}
|
|
// 启动心跳机制,每10秒发送一次心跳消息
|
private void startHeartbeat() {
|
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
|
scheduler.scheduleAtFixedRate(() -> {
|
if (this.isOpen()) {
|
send("{\"type\":\"heartbeat\"}");
|
System.out.println("发送心跳: {\"type\":\"heartbeat\"}");
|
}
|
}, 0, 10, TimeUnit.SECONDS);
|
}
|
|
// 发送消息的通用方法
|
public void sendMessage(String message) {
|
if (this.isOpen()) {
|
send(message);
|
System.out.println("发送消息: " + message);
|
} else {
|
System.out.println("WebSocket未连接,无法发送消息");
|
}
|
}
|
}
|