Android SocketIOClient error: "Scheme 'ws' not registered

I have a node.js/socket.io server and I wanted to create an Android app to comunicate via websockets. I found a library: https://github.com/koush/android-websockets But when I try to use the sample code (Socket.IO Usage):

SocketIOClient client = new SocketIOClient(URI.create("ws://myIP:port"), new SocketIOClient.Handler() {
    String TAG = "WebSocket Handler";
    @Override
    public void onConnect() {
            Log.d(TAG, "Connected!");
    }

    @Override
    public void on(String event, JSONArray arguments) {
        Log.d(TAG, String.format("Got event %s: %s", event, arguments.toString()));
    }

    @Override
    public void onDisconnect(int code, String reason) {
        Log.d(TAG, String.format("Disconnected! Code: %d Reason: %s", code, reason));
    }

    @Override
    public void onError(Exception error) {
        Log.e(TAG, "Error!", error);
    }
});

client.connect();

(using IP and port, or url:port) the following error occurs:

Error!
05-19 18:03:56.065: E/WebSocket Handler(629): java.lang.IllegalStateException: Scheme 'ws' not registered.
05-19 18:03:56.065: E/WebSocket Handler(629):   at org.apache.http.conn.scheme.SchemeRegistry.getScheme(SchemeRegistry.java:80)
05-19 18:03:56.065: E/WebSocket Handler(629):   at org.apache.http.impl.conn.DefaultHttpRoutePlanner.determineRoute(DefaultHttpRoutePlanner.java:107)
05-19 18:03:56.065: E/WebSocket Handler(629):   at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:565)
05-19 18:03:56.065: E/WebSocket Handler(629):   at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:292)
05-19 18:03:56.065: E/WebSocket Handler(629):   at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
05-19 18:03:56.065: E/WebSocket Handler(629):   at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
05-19 18:03:56.065: E/WebSocket Handler(629):   at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
05-19 18:03:56.065: E/WebSocket Handler(629):   at android.net.http.AndroidHttpClient.execute(AndroidHttpClient.java:243)
05-19 18:03:56.065: E/WebSocket Handler(629):   at com.codebutler.android_websockets.SocketIOClient.downloadUriAsString(SocketIOClient.java:48)
05-19 18:03:56.065: E/WebSocket Handler(629):   at com.codebutler.android_websockets.SocketIOClient.access$1(SocketIOClient.java:45)
05-19 18:03:56.065: E/WebSocket Handler(629):   at com.codebutler.android_websockets.SocketIOClient$3.run(SocketIOClient.java:200)

I can't find a solution

The example code in the readme file of https://github.com/koush/android-websockets is slightly misleading. Change ws:// to http:// and it should work properly.

Also for some reason it was not working properly in emulator. I tried it in the device and it seems to work after making the above change.

Do you know if your node.js/socket.io server is setup with an http listener? I've connected to node.js/socket.io from android but unfortunately I did not setup the server so I can't provide you full details. I do know that our node.js file was set up with an http listener which enabled clients to connect via http rather than ws.

If your server is setup with an http listener, you could try a different android socket.io library(https://github.com/Gottox/socket.io-java-client) that I used and works really well.