【发布时间】:2018-11-08 07:10:30
【问题描述】:
我正在尝试使用 Spring Boot (1.5.13) 实现 websocket。
消息传递工作正常,但大约 30 分钟后连接被服务器终止(原因 1008 - “此连接是在已结束的经过身份验证的 HTTP 会话下建立的”)。我尝试设置不同的超时时间,但似乎没有任何效果。
@Service
@RequiredArgsConstructor
@Slf4j
public class OCPPSocketHandler extends TextWebSocketHandler {
@Override
public void handleTextMessage(WebSocketSession webSocketSession, TextMessage textMessage)
throws IOException {
...
}
}
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
public static final String ENDPOINT = "/pp/v2.0";
@Autowired
private CustomSocketHandler socketHandler;
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(
new CustomExceptionWebSocketHandlerDecorator(socketHandler), ENDPOINT
)
.setAllowedOrigins("*");
}
}
application.properties:
#6h as milliseconds
server.connection-timeout=3600000
server.servlet.session.timeout=6h
每 30 分钟发送一次 TextMessage (WebSocket) 以保持连接有效。
我见过this question about session timeouts,但在那里我看不到解决方案
【问题讨论】:
-
原因 1008 是“POLICY_VIOLATION”1008 表示端点正在终止连接,因为它收到了违反其策略的消息”?您是否检查了日志以了解是否有违反策略的消息正在发送?
标签: java spring-boot websocket