设置org.apache.tomcat.WebSocket.BLOCKING_SEND_TIMEOUT以增加tomcat websocket超时的预期方法是什么?Tomcat文档陈述了以下内容:
可以通过设置附加到WebSocket会话的用户属性集合中的属性org.apache.tomcat.websocket.BLOCKING_SEND_TIMEOUT来更改此设置。
我在TextWebSocketHandler的afterConnectionEstablished方法中看到的WebSocketSession似乎没有用户属性。因此,我认为这不是文档的含义。在查看TomcatRequestUpgradeStrategy时,在我看来,它从来不查看端点用户属性。在我看来,您也不能覆盖TomcatRequestUpgradeStrategy,因为AbstractHandshakeHandler具有用于Tomcat请求升级策略。
请帮帮我
2条答案
按热度按时间uqcuzwp81#
org.apache.tomcat.websocket.BLOCKING_SEND_TIMEOUT
是您需要在WebSocket API的Session
上设置的用户属性,而不是此接口的Spring抽象。您可以通过将Spring
WebSocketSession
强制转换为NativeWebSocketSession
并检索底层WebSocket API会话来在afterConnectionEstablished
方法中配置它:字符串
mjqavswn2#
很高兴我看到这个页面!我们遇到了负载测试发送1000多条消息的问题,只有大约一半的消息被接收到,并且很难追踪原因。尽管发布的解决方案不太正确,至少对于我们的代码库来说,它为我指出了正确的方向。作为参考,我必须子类化
SubProtocolWebSocketHandler
并覆盖上面建议的afterConnectionEstablished()
方法,但Session
是StandardWebSocketSession
而不是NativeWebSocketSession
。字符串
然后,在指定了
@EnableWebSocketMessageBroker
的相关@Configuration
类中,提供@Bean
@Primary
方法来创建它的示例,该方法覆盖默认的SubProtocolWebSocketHandler
bean。