Итак, у меня есть сеанс Websocket, который считывает информацию с сервера. Однако, если я отключу информацию, которую он получает полностью, примерно через минуту он перестанет получать новую информацию и ничего не сделает, даже если снова будет возвращен вывод с сервера.Сессия WebSocket закрывается после не получения ввода в течение некоторого времени
Я думал, что метод WebSocketContainer
setDefaultMaxSessionIdleTimeout(Long time)
бы исправить мою проблему, поэтому я его
container.setDefaultMaxSessionIdleTimeout(86400000L);
который я думал, что означает, что она будет продолжать работать до 1 дня бездействия.
Однако это не так, оно прекращается через минуту бездействия. Ниже приведен код, я использую, может быть, кто-то может позволить мне знать, что я делаю неправильно:
public void run(String... args) throws Exception {
log.info("Starting...");
log.info("-- API URL: {}", apiUrl);
log.info("-- API Token: {}", apiToken);
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
container.setDefaultMaxSessionIdleTimeout(86400000L);
ClientEndpointConfig config = ClientEndpointConfig
.Builder.create()
.configurator(new CustomConfigurator(apiToken))
.build();
try {
session = container.connectToServer(ConsumerClient.class, config, URI.create(apiUrl));
} catch (DeploymentException de) {
log.error("Failed to connect - DeploymentException:", de);
} catch (IOException ioe) {
log.error("IOException:", ioe);
}
if (this.session == null) {
throw new RuntimeException("Unable to connect to endpoint.");
}
log.info("Max Idle Timeout: " + session.getMaxIdleTimeout());
log.info("Connected.");
log.info("Type \"exit\" to cancel.");
log.info("...Waiting for data...");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input;
try {
do {
input = br.readLine();
if (!input.equals("exit")) {
this.session.getBasicRemote().sendText(input);
}
} while (!input.equals("exit"));
} catch (IOException e) {
log.error("IOException:", e);
}
}
Я довольно новыми для WebSockets, чтобы я мог быть полностью недоразумение что-то, но я надеюсь, что кто-то будет в состоянии указать мне в правильном направлении. Заранее спасибо!
2 идеи, первые один проверить его из другой среды в исключить сетевые проблемы более низкого уровня. – Remco
Второй: протестируйте другой сервер, чтобы исключить проблемы с сервером, один без токена api. – Remco