Open supermaximus80 opened 1 year ago
looks like you are sending hash value of your 'sellCIndices' array. instead you can send content of your array using "Arrays.toString()" method. just replace " obj.put("sellCIndices", sellCIndices); " with " obj.put("sellCIndices", Arrays.toString(sellCIndices)); ". from client code
@shahabrar7746 Hi. In this case why this happens very seldom and most of the time array sends correctly? An example from the official documentation:
byte[] buffer = "abc".getBytes(StandardCharsets.UTF_8);
JSONObject object = new JSONObject();
object.put("test", "42");
socket.emit("hello", 1, "2", buffer, object);
So my question is, is this the bug? Should we always use Arrays.toString() while sending arrays?
its not a bug. its like a feacture of java
@shahabrar7746 Why this feature sometimes works, sometimes doesn't? It's the bug, but the problem is, is it server parser bug or java client.
The emit arguments are added in a JSONArray here: https://github.com/socketio/socket.io-client-java/blob/ad3a930e346ad54acd8e895b01418f7b936776dd/src/main/java/io/socket/client/Socket.java#L205-L212
Which are then stringified here: https://github.com/socketio/socket.io-client-java/blob/ad3a930e346ad54acd8e895b01418f7b936776dd/src/main/java/io/socket/parser/IOParser.java#L60-L62
It seems that the Java arrays like new int[] { 1, 2, 3 }
are sometimes not properly converted to [1,2,3]
on some platforms.
As a temporary workaround, I think converting the arrays to a list with Arrays.asList()
should fix the issue. Could you please check?
In the meantime, we will try to fix it in the codebase directly.
Describe the bug Sometimes socket.io client on android sends array of int[] wront. On server I receive something which looks like this: SELL_COMPANIES_SELECTED: {"sellCIndices":"[I@50bf616","nexEvent":"PROCESS_GAME_FIELD"} As you can see sellCIndices":"[I@50bf616" which is something I can't undertand. Normally received data should look like this SELL_COMPANIES_SELECTED: {"nexEvent":"PROCESS_GAME_FIELD","sellCIndices":[0]}
To Reproduce
Socket.IO server version:
4.6.1
Server
Socket.IO java client version:
2.1.0
Client
Expected behavior On my server I expect to see something like "sellCIndices":[0]. But, sometimes I see strange data like "sellCIndices":"[I@50bf616"
Platform:
Additional context This bug breaks all my application logic, it's very important to fix it or to find a workaround.