在使用Socket.io時(shí),可以通過在客戶端和服務(wù)器端互相發(fā)送心跳消息來實(shí)現(xiàn)心跳檢測(cè)。以下是一個(gè)簡(jiǎn)單的示例:
在客戶端:
Socket socket = IO.socket("http://localhost:3000");
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
// 發(fā)送心跳消息
socket.emit("heartbeat", "ping");
}
});
socket.on("heartbeat", new Emitter.Listener() {
@Override
public void call(Object... args) {
// 收到服務(wù)器端的心跳消息,回復(fù)心跳消息
socket.emit("heartbeat", "pong");
}
});
socket.connect();
在服務(wù)器端:
// 創(chuàng)建Socket.io服務(wù)器
SocketIOServer server = SocketIOServer.builder().build();
server.on("connection", socket -> {
// 發(fā)送心跳消息
socket.sendEvent("heartbeat", "ping");
});
server.on("heartbeat", (data, ackRequest) -> {
if ("ping".equals(data)) {
// 收到客戶端的心跳消息,回復(fù)心跳消息
ackRequest.sendAckData("pong");
}
});
server.start();
通過這種方式,客戶端和服務(wù)器端可以相互發(fā)送心跳消息,以確保連接的穩(wěn)定性。