Я пишу клиент WebSocket в Java-приложении, используя библиотеки Jetty 9.4.18.
Я довольно новичок в WebSockets, поэтому я начал тестирование, используя два примера классов из документации Jetty, подключившись к echo.websocket.org
Тест выполняется нормально при подключении без SSL, но если при подключении к wss://echo.websocket.org
происходит сбой
Я всегда получаю одно и то же исключение:
java.io.EOFException: HttpConnectionOverHTTP@50371e9d::DecryptedEndPoint@6dc65fc2{echo.websocket.org/174.129.224.73:443<->/192.168.1.34:60521,OPEN,fill=-,flush=C,to=226/0}
at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.earlyEOF(HttpReceiverOverHTTP.java:338)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1551)
at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.shutdown(HttpReceiverOverHTTP.java:209)
at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:147)
at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:73)
at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:133)
at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:155)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:411)
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:305)
at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:159)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
at java.lang.Thread.run(Thread.java:748)
Похоже, сервер закрывается без ответа на запрос подтверждения связи.
Мне известно о SslContextFactory, но, насколько я понимаю, его следует использовать только в том случае, если вам нужен собственный TrustStore или KeyStore или для других особых случаев.
Обратите внимание, что после некоторой неудачной попытки я скачал другую реализацию веб-сокета из https://github.com/TooTallNate/Java-WebSocket,, и она отлично работает как с ws, так и с wss, не устанавливая ничего конкретного для SSL.
Однако для этого проекта я обязуюсь использовать Jetty.
Код, который я использую, является в точности примером из документации Jetty по адресу https://www.eclipse.org/jetty/documentation/9.4.x/jetty-websocket-client-api.html
единственное изменение, которое я сделал, - это добавление метода onError в SimpleEchoSocket, который создает полный стек исключений.
Я что-то упустил?
Заранее спасибо!