Jetty WebSockets ssl == null 错误

Jetty WebSockets ssl == null error

我需要关闭连接,但我收到了

2016-10-28 10:46:07.624:WARN:oeji.nio:handle failed
java.lang.NullPointerException: ssl == null
    at com.android.org.conscrypt.NativeCrypto.SSL_read_BIO(Native Method)
    at com.android.org.conscrypt.OpenSSLEngineImpl.unwrap(OpenSSLEngineImpl.java:477)
    at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:1014)
    at org.eclipse.jetty.io.nio.SslConnection.unwrap(SslConnection.java:536)
    at org.eclipse.jetty.io.nio.SslConnection.process(SslConnection.java:359)
    at org.eclipse.jetty.io.nio.SslConnection.access0(SslConnection.java:48)
    at org.eclipse.jetty.io.nio.SslConnection$SslEndPoint.fill(SslConnection.java:678)
    at org.eclipse.jetty.websocket.WebSocketParserRFC6455.parseNext(WebSocketParserRFC6455.java:181)
    at org.eclipse.jetty.websocket.WebSocketConnectionRFC6455.handle(WebSocketConnectionRFC6455.java:225)
    at org.eclipse.jetty.io.nio.SslConnection.handle(SslConnection.java:196)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:52)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:543)
    at java.lang.Thread.run(Thread.java:833)

这是我的套接字代码:

private WebSocket webSocket = new WebSocket.OnTextMessage() {
    @Override
    public void onMessage(String data) {
        //...
    }

    @Override
    public void onOpen(Connection connection) {
        //...
    }

    @Override
    public void onClose(int closeCode, String message) {
        //...
        // this is called after connection.close() 
    }
};

WebSocketClientFactory webSocketClientFactory = new WebSocketClientFactory();
public void start(){
    webSocketClientFactory.stop();
    String urlConnect = "wss://test.test.com:111111/websocket";
    webSocketClientFactory.setBufferSize(100000);
    webSocketClientFactory.start();
    WebSocketClient webSocketClient = webSocketClientFactory.newWebSocketClient();
    webSocketClient.setMaxBinaryMessageSize(100000);
    webSocketClient.setMaxTextMessageSize(100000);
    Future<WebSocket.Connection> connectionFuture = webSocketClient.open(URI.create(urlConnect), webSocket);
}
// .......
// after some time call this
public void stop(){
    try {
        connection.close(); //this is going fine, error comes after
    } catch (Throwable t) {
        t.printStackTrace();//this not called
    }
}

我不明白该错误的原因是什么以及我该如何解决?我查看了 jetty 文档并检查了这里的一些线程,但没有发现任何关于该特定错误的信息

您必须停止 WebSocketClient。

试试这个:

public void stop(){
 try {
     webSocketClient.stop();
 } catch (Throwable t) {
     t.printStackTrace();//this not called
 }
}

public void stop(){
 try {
     webSocketClient.stop();
     connection.close();
 } catch (Throwable t) {
     t.printStackTrace();//this not called
 }
}

Link: where I have see it