So habe ich eine Websocket-Sitzung, die Informationen von einem Server liest. Wenn ich jedoch die Informationen, die er vollständig empfängt, abschneide, hört er nach ungefähr einer Minute auf, neue Informationen zu empfangen, und tut nichts, selbst wenn die Ausgabe vom Server wieder eingeschaltet wird.WebSocket-Sitzung wird geschlossen, nachdem für einige Zeit keine Eingabe empfangen wurde
Ich dachte, dass die WebSocketContainer Methode
setDefaultMaxSessionIdleTimeout(Long time)
mein Problem beheben würde, so dass ich setzen Sie ihn auf
container.setDefaultMaxSessionIdleTimeout(86400000L);
, die ich dachte, dass es bis zu 1 Tag Inaktivität angerannt bedeuten würde, wird sich fortsetzen.
Dies ist jedoch nicht der Fall, es stoppt nach nur einer Minute Inaktivität. Unten ist der Code ich verwende, vielleicht kann mir jemand wissen lassen, was mache ich falsch:
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);
}
}
Ich bin ziemlich neu in WebSockets so dass ich völlig etwas Missverständnis sein, aber ich hoffe, dass jemand sein wird, kann mich in die richtige Richtung weisen. Danke im Voraus!
2 Ideen, erst man es von einer anderen Umgebung überprüfen Netzwerkprobleme auf niedriger Ebene ausschließen – Remco
Zweiter: Testen Sie mit einem anderen Server, um serverseitige Probleme auszuschließen, einen ohne das API-Token. – Remco