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