在使用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();
通过这种方式,客户端和服务器端可以相互发送心跳消息,以确保连接的稳定性。