Android with websocket communication (Node Websocket server and Android Java Client). Dosen't work on Android 4

I tried to use as a Android client Websocket - weberknecht with a thread to send every second a message to a Nodejs Websocket (js): Node WebSocket Server

It work fine on android 2 or 2.3.3, but when i trie on android 4 i get an error on websocket.connect();

Do you know why or what i am doing wrong?

My code is:

public class MainThread extends Thread {

    private boolean is_running;
    private URI url = null;
    private de.roderick.weberknecht.WebSocket websocket = null;

    public MainThread() {
        this.is_running = false;
        try {
            url = new URI("ws://192.168.1.88:8088/");
            websocket = new WebSocketConnection(url);

            websocket.setEventHandler(new WebSocketEventHandler() {
                public void onOpen(){
                    System.out.println("--open");
                }
                public void onMessage(WebSocketMessage message){
                    System.out.println("--received message: " + message.getText());
                }
                public void onClose(){
                    System.out.println("--close");
                }
            });
        } catch (WebSocketException wse) {
            wse.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        } catch (URISyntaxException use) {
            use.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }

    }
    @Override
    public void run() {
        while(is_running){
            try {
                websocket.send("hello world");
                Thread.sleep(10000);
            }
            catch (WebSocketException wse) {
                wse.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();  
            }

        }
    }

    public void set_running(boolean is_running) {
        if(is_running == true)
            try {
                websocket.connect();
                this.is_running = is_running;
            } catch (WebSocketException e) {
                System.out.println(e.toString());
                //e.printStackTrace();  
            }
    }
}

and the error I get on android 4:

ERROR/AndroidRuntime(562): FATAL EXCEPTION: main
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.biskis.test.websocket/com.biskis.test.websocket.GameActivity}: android.os.NetworkOnMainThreadException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
        at android.app.ActivityThread.access$600(ActivityThread.java:123)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4424)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
        at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
        at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
        at libcore.io.IoBridge.connect(IoBridge.java:112)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
        at java.net.Socket.startupSocket(Socket.java:566)
        at java.net.Socket.tryAllAddresses(Socket.java:127)
        at java.net.Socket.<init>(Socket.java:177)
        at java.net.Socket.<init>(Socket.java:149)
        at de.roderick.weberknecht.WebSocketConnection.createSocket(WebSocketConnection.java:238)
        at de.roderick.weberknecht.WebSocketConnection.connect(WebSocketConnection.java:83)
        at com.biskis.test.websocket.MainThread.set_running(MainThread.java:76)
        at com.biskis.test.websocket.GameActivity.onCreate(GameActivity.java:20)
        at android.app.Activity.performCreate(Activity.java:4465)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
        ... 11 more

Or do you know how to implement this in a better way to comunicate a client (java, android) to a server (nodejs, websocket) ?

Thank you.

Don't connect to the Websocket on the main Thread (i.e. in GameActivity.onCreate) and the error will go away. You could use an AsyncTask to connect to the Websocket in the background.

Blocking the main thread by I/O operations (and network access is ultimately a I/O operation) will lead (in the worst case) to a sluggish user interface or Android killing your application because it didn't react timely. See the designing for responsiveness document.