在Java中,我们可以使用Spring Boot框架和Spring WebSocket库来实现WebSocket服务器。为了处理心跳包,我们可以在客户端和服务器端都实现心跳检测的逻辑。这里是一个简单的示例:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> </dependencies>
@Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { @Override public void configureMessageBroker(MessageBrokerRegistry config) { config.enableSimpleBroker("/topic"); config.setApplicationDestinationPrefixes("/app"); } @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/websocket").withSockJS(); } }
@Controller public class WebSocketController { @MessageMapping("/sendHeartbeat") @SendTo("/topic/heartbeat") public String sendHeartbeat() { return "Heartbeat sent"; } }
function sendHeartbeat() { if (socket.readyState === WebSocket.OPEN) { socket.send('{"type": "heartbeat"}'); } } setInterval(sendHeartbeat, 30000); // 每30秒发送一次心跳包
@MessageMapping("/app/heartbeat") public void handleHeartbeat(@Payload HeartbeatMessage message, SimpMessageHeaderAccessor headerAccessor) { headerAccessor.getSessionAttributes().put("lastHeartbeat", System.currentTimeMillis()); }
在这个示例中,我们创建了一个简单的WebSocket服务器,客户端定期发送心跳包,服务器端处理这些心跳包并更新客户端的最后心跳时间。你可以根据实际需求对这个示例进行扩展和优化。