Я написал некоторую логику, которая представляет около 200 соединений websocet с обменом одновременно. Я использую сторонний API, и он основан на org.eclipse.jetty.websocket.api .У меня есть этот метод, который мне пришлось переопределить.
try {
URI uri = new URI(websocketBaseUrl + url);
SslContextFactory sslContextFactory = new SslContextFactory();
sslContextFactory.setTrustAll(true);
WebSocketClient client = new WebSocketClient(sslContextFactory);
client.setMaxIdleTimeout(0);
client.start();
return client.connect(adapter, uri).get();
} catch (URISyntaxException e) {
throw new BinanceApiException("URL Syntax error: " + e.getMessage());
} catch (Throwable e) {
throw new BinanceApiException("Websocket error: " + e.getMessage());
}
Я добавил setIdleTimeout, чтобы соединение не потерялось, если я не получаю информацию в течение длительного времени.Exchange закрывает соединение один раз в день, но в течение 2,3, а иногда и 4 дней оно снова подключается. Но наконец я получаю следующее:
java.nio.channels.ClosedChannelException: null at org.eclipse.jetty.io.WriteFlusher.onClose (WriteFlusher.java:507) в org.eclipse.jetty.io.ssl.SslConnection $ DecryptedEndPoint.onIncompleteFlush (SslConnection.java:527) в org.eclipse.jetty.io.Flush.InEAbstractEndPoint.java:54) в org.eclipse.jetty.io.WriteFlusher.write (WriteFlusher.java:331) в org.eclipse.jetty.io.AbstractEndPoint.write (AbstractEndPoint.java:372) в org.eclipse.jetty.websocket.common.io.FrameFlusher $ Flusher.flush (FrameFlusher.java:153) в org.eclipse.jetty.websocket.common.io.FrameFlusher $ Flusher.process (FrameFlusher.java:217) в org.eclipse.jetty.util.IteratingCallback.processing (IteratingCallback.java:241) в org.eclipse.jetty.util.IteratingCallback.iterate (IteratingCallback.java:224) в org.eclipse.jetty.websocket.common.io.FrameFlusher.enqueueher.java:382) по адресу org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.outgoingFrame (AbstractWebSocketConnection.java:614) по адресу org.eclipse.jetty.websocket.client.io.WebSocketauneConConjectClientClient72) в org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onConnectionStateChange (AbstractWebSocketConnection.java:473) в org.eclipse.jetty.websocket.common.io.IOState.notifyState4tate org: I.eclipse.jetty.websocket.common.io.IOState.onReadFailure (IOState.java:498) в org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse (AbstractWebSocketConnection.java:etl.sel или org) at.websocket.common.io.AbstractWebSocketConnection.onFillable (AbstractWebSocketConnection.java:511) в org.eclipse.jetty.io.AbstractConnection $ ReadCallback.succeeded (AbstractConnection.java:279) в org.eclipio.(FillInterest.java:104) в org.eclipse.jetty.io.ssl.SslConnection.onFillable (SslConnection.java:289) в org.eclipse.jetty.io.ssl.SslConnection $ 3.succeeded (SslConnection.java:149) в org.eclipse.jetty.io.FillInterest.fillable (FillInterest.java:104 вorg.eclipse.jetty.io.ChannelEndPoint $ 2.run (ChannelEndPoint.java:124) в org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce (EatWhatYouKill.java:247) в org.eclipsej.thread.strategy.$ ReservedThread.run (ReservedThreadExecutor.java:243) в org.eclipse.jetty.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.java:679) в org.eclipse.jetty.util.thread.QouedJava: 597) at java.lang.Thread.run (Thread.java:748)
Я нахожу этот вопрос на stackoverflow , но не вижу четкого ответа.Просьба помочь. Спасибо заранее.