2017-10-25 11 views
1

보안 웹 소켓 서버에 연결하기 위해 OkHttp3을 사용하려고했습니다. 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 웹 소켓을 사용하고 내가 같은 문제에 직면하고 있습니다. 나중에 어느 정도 시간이 지나면 서버가 연결을 끊는 것으로 나타났습니다.