SockJS 协议要求服务器发送心跳信息,以排除代理机构得出连接已挂起的结论。Spring SockJS 配置中有一个名为 heartbeatTime 的属性,你可以用它来定制这个频率。默认情况下,假设该连接上没有发送其他消息,那么心跳会在 25 秒后发送。这个 25 秒的值与以下 IETF 对公共互联网应用的建议相一致。
:::info 当通过 WebSocket 和 SockJS 使用 STOMP 时,如果 STOMP 客户端和服务器协商交换心跳,SockJS 的心跳将被禁用。 :::
Spring SockJS 支持还可以让你配置 TaskScheduler 来调度心跳任务。任务调度器由线程池支持,其默认设置基于可用的处理器数量。你应该考虑根据你的具体需求来定制设置。