我们有一个基于WebSockets的Spring连接,我们正在传递一个CONNECT
帧:
CONNECT\naccept-version:1.2\nheart-beat:10000,10000\n\n\u0000
处理程序确认后,会启动一个新会话,然后返回:
CONNECTED
version:1.2
heart-beat:0,0
然而,我们需要这些心跳来保持WebSocket的开启。我们没有使用SockJS。
我逐步浏览了Spring消息处理程序:
StompHeaderAccessor [headers={simpMessageType=CONNECT, stompCommand=CONNECT, nativeHeaders={accept-version=[1.2], heart-beat=[5000,0]}, simpSessionAttributes={}, simpHeartbeat=[J@5eba717, simpSessionId=46e855c9}]
当它收到heart-beat
(原生头)后,它设置了一个看起来像内存地址的值 simpHeartbeat=[J@5eba717, simpSessionId=46e855c9}]
需要注意的是,在代理人认证之后:
Processing CONNECT session=46e855c9
(这里的sessionId与simpSessionId不同)?
运行早期的TRACE
调试时,我看到了一个通知“计划心跳…”或类似的东西…尽管我现在没有看到它?
有什么想法吗?
谢谢
我在文档中找到了解释:
SockJS任务计划器统计信息来自SockJS任务计划器的线程池,该线程池用于发送心跳。 请注意,当在STOMP级别上协商心跳时,SockJS心跳将被禁用。
SockJS心跳与STOMP心跳不同吗?