我正在尝试使用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("*");
}
}
#6h as milliseconds
server.connection-timeout=3600000
server.servlet.session.timeout=6h
我见过这个关于会话超时的问题,但我找不到解决方案
我发现我的WebSocket在30分钟后也关闭了。
根本原因是在SpringBoot中默认情况下http会话将在30分钟后关闭。
在SpringBoot中,config propertyserver.servlet.session.timeout
将更改默认行为,但可能会有一些限制。
io.undertow.server.session.InMemorySessionManager.sessionImpl
。io.undertow.server.session.InMemorySessionManager.sessionImpl#SetMaxInActiveInterval
将重置计时器。javax.servlet.http.HttpSession#SetMaxInActiveInterval
调用。SetMaxInActiveInterval
,连接将永远不会关闭。下面是我的实现:
handshakeRequest
存储到配置器javax.websocket.EndpointConfig#GetUserProperties
中的javax.websocket.server.serverEndpointConfig.Configator#Modifyhandshake
onmessage
方法中,从javax.websocket.session#GetUserProperties
中获取handshakeRequest
,然后HttpSession httpSession = (HttpSession) handshakeRequest.getHttpSession();
httpSession.setMaxInactiveInterval((int) (session.getMaxIdleTimeout() / 1000));
仅此而已,希望有帮助。
手撕环节:LeetCode原题 5分钟结束。 1.什么是链表(我例举了单链表和双向链表)。 2.尾插法,头插法(尾插忘了,就记了个头插入)。 3.HashMap(老八股了,从头溜到尾)。 4.HashMap线程安全吗? 为什么,会导致什么?(循环链表)。 5.为什么选用SpringBoot。 6.@Autowired和@Resource(面试官没读清,就听到了个@Resource) 7.Mysql
问题内容: 我在服务器系统上工作,该系统不允许我存储超过50 GB的文件。我的应用程序需要20分钟才能生成文件。有什么方法可以将超过30分钟的所有文件从源移动到目标?我试过了: 但这不会从我的服务器中删除文件,因此存储限制失败。 其次,如果我使用该命令,仍在生成的文件也将移至目标文件夹,并且程序将失败。 问题答案: 您可以与此一起使用:- 根据需要替换并使用源路径和目标路径。 该命令的基本作用是,
问题内容: 如果执行以下操作,文件句柄会在Python范围之外时自动关闭吗: 如果没有,如何编写此函数以自动关闭范围? 问题答案: 它应该关闭文件语句中的文件句柄,但是更好的方法是使用块: 有关更多信息,请参见http://docs.python.org/library/stdtypes.html#file.close。
下面是我的配置: 但是,我在1分30秒后得到504网关超时错误。但不是根据我上面的配置,原因是什么?我怎么才能让它工作更多秒。
所以我刚刚把我的Android Studio从3.0.1更新到了3.1。当我输入这个的时候,超过30分钟已经过去了,Android Studio被困在配置构建中。 我做了什么: 更改项目渐变文件中的渐变版本 我的项目build.gradle 这是我的申请build.gradle
我想从9:30到12点每两分钟运行一次cron作业。我该怎么做? 这是正确的吗?我应该在哪里加30?