coder21
coder21

Reputation: 129

java websocket cannot resolve setwebsocketfactory

I am trying out a websocketclient on my android using java_websocket library from TooTallNate. Everything works fine on ws. For wss, my local development server has a self signed certificate that I am trying to bypass in my client using instructions from here. However,

WebSocketClient.setWebSocketFactory(new DefaultSSLWebSocketClientFactory(sc)); 

doesnt resolve either setWebSocketFactory or DefaultSSLWebSocketClientFactory. Am I missing something in my compile headers for SSL support in WSS? This is my dependency

compile 'org.java-websocket:Java-WebSocket:1.3.4'

and this header doesnt resolve either

import org.java_websocket.client.DefaultSSLWebSocketClientFactory;

Can you let me know what I am missing out on. Thanks!

Upvotes: 2

Views: 2664

Answers (1)

coder21
coder21

Reputation: 129

Nevermind. Got it working. Looks like the API is currently different.

Use this snippet from https://github.com/TooTallNate/Java-WebSocket/blob/master/src/main/example/SSLClientExample.java to accept self-signed certificates where mWebSocketClient is object of type WebSocketClient.

    TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
        public X509Certificate[] getAcceptedIssuers() {
            X509Certificate[] myTrustedAnchors = new X509Certificate[0];
            return myTrustedAnchors;
        }

        @Override
        public void checkClientTrusted(X509Certificate[] certs,
                                       String authType) {}

        @Override
        public void checkServerTrusted(X509Certificate[] certs,
                                       String authType) {}
    } };
    try {
        SSLContext sslContext = SSLContext.getInstance("TLS");
        sslContext.init(null, trustAllCerts, new SecureRandom());
        SSLSocketFactory factory = sslContext.getSocketFactory();
        mWebSocketClient.setSocket(factory.createSocket());
        mWebSocketClient.connectBlocking();
    }
    catch (Exception e){
        e.printStackTrace();
    }

Upvotes: 2

Related Questions