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.32k stars 972 forks source link

How to get multiple parameters in server response. #689

Open humanfriend22 opened 2 years ago

humanfriend22 commented 2 years ago

I am creating an android app with auth and I send data to authorize on my Socket.io Server. I can send the data and handle it on my server just fine, but the server response is where I am getting an error. My server responds with something like this:

socket.emit("authUser-res", 'invalid_credentials',  '_error');

I can listen to the event on the client and read the first parameter just fine, but when I try to read the second one, I get a java.lang.ArrayIndexOutOfBoundsException error. My java event-listener on the client:

client.on("authUser-res", new Emitter.Listener() {
            public void call(Object... res) {
                String message = (String) res[0];
                String userName = (String) res[1];
                authUserServerResponse(message, userName);
            }
        });

When reading res[1], I get this full error:

2021-10-24 15:04:38.412 30240-30416/com.humanfriend22.testpackage E/EventThread: Task threw exception
    java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
        at com.humanfriend22.testpackage.OnloadAuthActivity$2.call(OnloadAuthActivity.java:92)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.client.Socket.onevent(Socket.java:318)
        at io.socket.client.Socket.onpacket(Socket.java:269)
        at io.socket.client.Socket.access$100(Socket.java:18)
        at io.socket.client.Socket$2$2.call(Socket.java:88)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.client.Manager.ondecoded(Manager.java:368)
        at io.socket.client.Manager.access$1300(Manager.java:22)
        at io.socket.client.Manager$5.call(Manager.java:346)
        at io.socket.parser.IOParser$Decoder.add(IOParser.java:101)
        at io.socket.client.Manager.ondata(Manager.java:353)
        at io.socket.client.Manager.access$900(Manager.java:22)
        at io.socket.client.Manager$2.call(Manager.java:325)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.engineio.client.Socket.onPacket(Socket.java:558)
        at io.socket.engineio.client.Socket.access$1000(Socket.java:36)
        at io.socket.engineio.client.Socket$5.call(Socket.java:337)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.engineio.client.Transport.onPacket(Transport.java:124)
        at io.socket.engineio.client.Transport.onData(Transport.java:116)
        at io.socket.engineio.client.transports.WebSocket.access$100(WebSocket.java:23)
        at io.socket.engineio.client.transports.WebSocket$1$2.run(WebSocket.java:73)
        at io.socket.thread.EventThread$2.run(EventThread.java:80)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
        at java.lang.Thread.run(Thread.java:764)
2021-10-24 15:04:38.417 30240-30416/com.humanfriend22.testpackage E/AndroidRuntime: FATAL EXCEPTION: EventThread
    Process: com.humanfriend22.testpackage, PID: 30240
    java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
        at com.humanfriend22.testpackage.OnloadAuthActivity$2.call(OnloadAuthActivity.java:92)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.client.Socket.onevent(Socket.java:318)
        at io.socket.client.Socket.onpacket(Socket.java:269)
        at io.socket.client.Socket.access$100(Socket.java:18)
        at io.socket.client.Socket$2$2.call(Socket.java:88)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.client.Manager.ondecoded(Manager.java:368)
        at io.socket.client.Manager.access$1300(Manager.java:22)
        at io.socket.client.Manager$5.call(Manager.java:346)
        at io.socket.parser.IOParser$Decoder.add(IOParser.java:101)
        at io.socket.client.Manager.ondata(Manager.java:353)
        at io.socket.client.Manager.access$900(Manager.java:22)
        at io.socket.client.Manager$2.call(Manager.java:325)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.engineio.client.Socket.onPacket(Socket.java:558)
        at io.socket.engineio.client.Socket.access$1000(Socket.java:36)
        at io.socket.engineio.client.Socket$5.call(Socket.java:337)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.engineio.client.Transport.onPacket(Transport.java:124)
        at io.socket.engineio.client.Transport.onData(Transport.java:116)
        at io.socket.engineio.client.transports.WebSocket.access$100(WebSocket.java:23)
        at io.socket.engineio.client.transports.WebSocket$1$2.run(WebSocket.java:73)
        at io.socket.thread.EventThread$2.run(EventThread.java:80)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
        at java.lang.Thread.run(Thread.java:764)

Please Help, I need two parameters for my app to function the planned way.

Thank you in advance.