2017-10-25 18 views
1

私はOkHttp3を安全なwebsocketサーバーに接続しようとしました。 wss://echo.websocket.orgを使用しているときは問題なく動作していますが、進行中のプロジェクトのプロダクションサーバに接続すると、正しく接続されません。 30-40秒後にonClosingWebSocketListenerで呼び出されます。OkHttpで安全なウェブソケット(wss)を使用

私はこれがSSL/TLS暗号化で何かを持っていると思われます(wss)。 OkHttpClientに新しい証明書を受け入れる方法はありますか?

これはOkhttp3とのWebSocket接続を確立するために使用しているコードです。

WebSocket webSocket; 
OkHttpClient client; 

OkHttpClient.Builder builder = new OkHttpClient.Builder(); 
client = builder.build(); 
Request request = new Request.Builder() 
     .url(MainActivity.WS_URL) 
     .header("Auth-Token","secret-api-token-here") 
     .build(); 
Log.i("WebSockets", "Headers: " + request.headers().toString()); 
webSocket = client.newWebSocket(request, new WebSocketListener() { 

    private static final int NORMAL_CLOSURE_STATUS = 1000; 
    @Override 
    public void onOpen(WebSocket webSocket, Response response) { 
     webSocket.send("{Auth-Token:secret-api-token-here}"); 
     Log.i("WebSockets", "Connection accepted!"); 
     //webSocket.close(NORMAL_CLOSURE_STATUS, "Goodbye !"); 
    } 
    @Override 
    public void onMessage(WebSocket webSocket, String text) { 
     Log.i("WebSockets", "Receiving : " + text); 
    } 
    @Override 
    public void onMessage(WebSocket webSocket, ByteString bytes) { 
     Log.i("WebSockets", "Receiving bytes : " + bytes.hex()); 
    } 
    @Override 
    public void onClosing(WebSocket webSocket, int code, String reason) { 
     webSocket.close(NORMAL_CLOSURE_STATUS, null); 
     Log.i("WebSockets", "Closing : " + code + "/" + reason); 
    } 
    @Override 
    public void onFailure(WebSocket webSocket, Throwable t, Response response) { 
     Log.i("WebSockets", "Error : " + t.getMessage()); 
    }}); 
} 

答えて

0

私は暗号化接続wssを介してサーバとの接続にOkHttp3のWebSocketを使用して、私は同じ問題に直面しています。後で、一定期間後にサーバーが接続を切断していることが判明しました。

関連する問題