[英]Invalid ping-packet sent by WebSocket in Spring framework, client ping doesn't update session timeout
影响: <5.3.6>
在 Spring WebSocket 中设置服务器 ping 时,将向客户端发送有效载荷为 0xA 的文本包(操作码 1)。 结果客户端不理解数据包并且不发送pong。 我认为数据包操作码应该是 0x9(ping)并且有效载荷应该是空的,对吗? 如何解决这个问题?
还有另一个问题:客户端发送的 ping 不更新 session 超时。 尽管客户端发送了 ping,但我的 session 到期。 这是正常行为吗? 我正在使用嵌入式 Hazelcast session 存储库。
这是我的 WebSocket 配置:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractSessionWebSocketMessageBrokerConfigurer<Session> {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
ThreadPoolTaskScheduler pingScheduler = new ThreadPoolTaskScheduler();
pingScheduler.setPoolSize(1);
pingScheduler.setThreadNamePrefix("wss-heartbeat-thread-");
pingScheduler.initialize();
config.enableSimpleBroker("/topic").setHeartbeatValue(new long[]{10000, 0}).setTaskScheduler(pingScheduler); // prefix for STOMP endpoints where clients can subscribe (from where clients get notifications), e.g. /topic/record
config.setApplicationDestinationPrefixes("/messages"); // prefix for STOMP endpoints where clients send messages, e.g. /messages/record
config.setUserDestinationPrefix("/user");
}
@Override
protected void configureStompEndpoints(StompEndpointRegistry registry)
{
registry.addEndpoint("/stomp").withSockJS();
}
@Override
public void configureClientInboundChannel(ChannelRegistration registration) {
super.configureClientInboundChannel(registration);
registration.interceptors(new TopicSubscriptionInterceptor());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.