diff --git a/src/main/java/com/github/nkzawa/socketio/client/Socket.java b/src/main/java/com/github/nkzawa/socketio/client/Socket.java index 55a17eb..6b404d3 100644 --- a/src/main/java/com/github/nkzawa/socketio/client/Socket.java +++ b/src/main/java/com/github/nkzawa/socketio/client/Socket.java @@ -159,7 +159,9 @@ public class Socket extends Emitter { public void run() { List _args = new ArrayList() {{ add(event); - addAll(Arrays.asList(args)); + if (args != null) { + addAll(Arrays.asList(args)); + } }}; Packet packet = new Packet(Parser.EVENT, toJsonArray(_args)); diff --git a/src/test/java/com/github/nkzawa/socketio/client/ServerConnectionTest.java b/src/test/java/com/github/nkzawa/socketio/client/ServerConnectionTest.java index d081703..772eed3 100644 --- a/src/test/java/com/github/nkzawa/socketio/client/ServerConnectionTest.java +++ b/src/test/java/com/github/nkzawa/socketio/client/ServerConnectionTest.java @@ -196,6 +196,30 @@ public class ServerConnectionTest { socket.disconnect(); } + @Test(timeout = TIMEOUT) + public void ackWithoutArgs() throws URISyntaxException, InterruptedException { + final BlockingQueue events = new LinkedBlockingQueue(); + + IO.Options opts = new IO.Options(); + opts.forceNew = true; + socket = IO.socket(uri(), opts); + socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() { + @Override + public void call(Object... objects) { + socket.emit("ack", null, new Ack() { + @Override + public void call(Object... args) { + System.out.println("ack: " + args); + events.offer(args); + } + }); + } + }); + socket.connect(); + + assertThat(events.take(), is(new Object[] {})); + socket.disconnect(); + } private String uri() { return "http://localhost:" + PORT + nsp();