socketio / socket.io-client-java

Full-featured Socket.IO Client Library for Java, which is compatible with Socket.IO v1.0 and later.
https://socketio.github.io/socket.io-client-java/installation.html
Other
5.31k stars 969 forks source link

Java socket io client connection disconnects #723

Open Areej-Fatima opened 1 year ago

Areej-Fatima commented 1 year ago

I have implemented socket.io client side in java spring boot, using thread pool executor. Now my socket connections are build successfully, but after 50s to 1 minute, they start getting disconnected. How to sustain socket connections? My code is as below

    CountDownLatch lock = new CountDownLatch(200);
    ScheduledExecutorService executor = Executors.newScheduledThreadPool(200);
    ScheduledFuture<?> future;
        for(int i=1;i<=200;i++) {

        future= executor.scheduleAtFixedRate(() -> {

            Map<String, String> map = new HashMap<String, String>();
            map.put("token", "abc");

            IO.Options options = IO.Options.builder()
                    .setPath("/socket.io")
                    .setTransports(new String[]{Polling.NAME,WebSocket.NAME})
                    .setAuth(map)
                    .build();

            Socket socket = IO.socket(URI.create("wss://localhost:3000"), options);

            socket.on("connect_error", new Emitter.Listener() {
                @Override
                public void call(Object... args) {
                    System.out.println(args[0]);
                }
            });

            socket.on("connect", new Emitter.Listener() {
                @Override
                public void call(Object... args) {
                    System.out.println("Socket connection "+i+" successfully created");
                }
            });
            socket.on("disconnect", new Emitter.Listener() {
                @Override
                public void call(Object... args) {
                    System.out.println("Socket connection "+i+" disconnected");
                }
            });

            socket.connect();
            lock.countDown();
        }, 1000, delay, TimeUnit.MILLISECONDS);

        lock.await(delay, TimeUnit.MILLISECONDS);
        future.cancel(true);

    }//end of for loop
    executor.shutdown();

My java socket.io-client 2.1.0 is compatible with socket.io server v4.x.