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 76b10c6..3a5e839 100644 --- a/src/test/java/com/github/nkzawa/socketio/client/ServerConnectionTest.java +++ b/src/test/java/com/github/nkzawa/socketio/client/ServerConnectionTest.java @@ -16,6 +16,7 @@ import static org.junit.Assert.assertThat; public class ServerConnectionTest extends Connection { private Socket socket; + private Socket socket2; @Test(timeout = TIMEOUT) public void openAndClose() throws URISyntaxException, InterruptedException { @@ -181,4 +182,62 @@ public class ServerConnectionTest extends Connection { socket.connect(); semaphore.acquire(); } + + @Test(timeout = TIMEOUT) + public void closeEngineConnection() throws URISyntaxException, InterruptedException { + final Semaphore semaphore = new Semaphore(0); + + socket = client(); + socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() { + @Override + public void call(Object... args) { + socket.io().engine.on(com.github.nkzawa.engineio.client.Socket.EVENT_CLOSE, new Emitter.Listener() { + @Override + public void call(Object... objects) { + semaphore.release(); + } + }); + socket.disconnect(); + } + }); + socket.connect(); + semaphore.acquire(); + } + + @Test(timeout = TIMEOUT) + public void broadcast() throws URISyntaxException, InterruptedException { + final Semaphore semaphore = new Semaphore(0); + + socket = client(); + socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() { + @Override + public void call(Object... objects) { + try { + socket2 = client(); + } catch (URISyntaxException e) { + throw new RuntimeException(e); + } + + socket2.on(Socket.EVENT_CONNECT, new Emitter.Listener() { + @Override + public void call(Object... objects) { + socket2.emit("broadcast", "hi"); + } + }); + socket2.connect(); + } + }).on("broadcastBack", new Emitter.Listener() { + @Override + public void call(Object... objects) { + assertThat(objects.length, is(1)); + assertThat(objects[0], is(instanceOf(String.class))); + assertThat((String)objects[0], is("hi")); + socket.disconnect(); + socket2.disconnect(); + semaphore.release(); + } + }); + socket.connect(); + semaphore.acquire(); + } } diff --git a/src/test/resources/server.js b/src/test/resources/server.js index d895d5d..887c7ba 100644 --- a/src/test/resources/server.js +++ b/src/test/resources/server.js @@ -45,6 +45,11 @@ io.of(nsp).on('connection', function(socket) { callback(new Date()); }); + socket.on('broadcast', function(data) { + var args = slice.call(arguments); + socket.broadcast.emit.apply(socket, ['broadcastBack'].concat(args)); + }); + socket.on('disconnect', function() { console.log('disconnect'); });