fix sending binary and add tests
This commit is contained in:
@@ -24,7 +24,7 @@ public class HasBinaryData {
|
||||
JSONArray _obj = (JSONArray)obj;
|
||||
int length = _obj.length();
|
||||
for (int i = 0; i < length; i++) {
|
||||
if (recursiveCheckForBinary(_obj.get(i))) {
|
||||
if (recursiveCheckForBinary(_obj.isNull(i) ? null : _obj.get(i))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -280,7 +280,12 @@ public class Manager extends Emitter {
|
||||
this.subs.add(On.on(socket, Engine.EVENT_DATA, new Listener() {
|
||||
@Override
|
||||
public void call(Object... objects) {
|
||||
Manager.this.ondata((String)objects[0]);
|
||||
Object data = objects[0];
|
||||
if (data instanceof String) {
|
||||
Manager.this.ondata((String)data);
|
||||
} else if (data instanceof byte[]) {
|
||||
Manager.this.ondata((byte[])data);
|
||||
}
|
||||
}
|
||||
}));
|
||||
this.subs.add(On.on(this.decoder, Parser.Decoder.EVENT_DECODED, new Listener() {
|
||||
@@ -307,6 +312,10 @@ public class Manager extends Emitter {
|
||||
this.decoder.add(data);
|
||||
}
|
||||
|
||||
private void ondata(byte[] data) {
|
||||
this.decoder.add(data);
|
||||
}
|
||||
|
||||
private void ondecoded(Packet packet) {
|
||||
this.emit(EVENT_PACKET, packet);
|
||||
}
|
||||
|
||||
@@ -146,7 +146,10 @@ public class Socket extends Emitter {
|
||||
List<Object> _args = new ArrayList<Object>(args.length + 1);
|
||||
_args.add(event);
|
||||
_args.addAll(Arrays.asList(args));
|
||||
JSONArray jsonArgs = new JSONArray(_args);
|
||||
JSONArray jsonArgs = new JSONArray();
|
||||
for (Object arg : _args) {
|
||||
jsonArgs.put(arg);
|
||||
}
|
||||
int parserType = Parser.EVENT;
|
||||
if (HasBinaryData.hasBinary(jsonArgs)) { parserType = Parser.BINARY_EVENT; }
|
||||
Packet<JSONArray> packet = new Packet<JSONArray>(parserType, jsonArgs);
|
||||
|
||||
Reference in New Issue
Block a user