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