@Component
@EnableScheduling
@Slf4j
public class WebSocketHeartBeatTask {

    /**
     * 每10秒进行一次websocket心跳检测
     */
    @Scheduled(cron = "0/10 * * * * ?")
    public void beatTask() {
        AtomicInteger num = new AtomicInteger();
        SessionMgr.nativeSessions.values().stream().parallel().forEach(session->{
            try {
                session.sendMessage(new PingMessage());
                num.getAndIncrement();
            } catch (Exception e) {
                log.error("websocket心跳异常",e);
            }
        });
        log.info("websocket心跳检测结果,共【{}】个连接", num);
    }
}

更多推荐