"\"channel\": \"/meta/connect\"," +
"\"clientId\": \"" + clientId + "\"," +
"\"connectionType\": \"long-polling\"" +
"}]");
FutureResponseListener listener = new FutureResponseListener(connect2);
connect2.send(listener);
// Wait for the /meta/connect to be suspended
Thread.sleep(1000);
final CountDownLatch latch = new CountDownLatch(1);
serverSession.addListener(new ServerSession.RemoveListener()
{
@Override
public void removed(ServerSession session, boolean timeout)
{
latch.countDown();
}
});
Request disconnect = newBayeuxRequest("[{" +
"\"channel\": \"/meta/disconnect\"," +
"\"clientId\": \"" + clientId + "\"" +
"}]");
response = disconnect.send();
Assert.assertEquals(200, response.getStatus());
Assert.assertTrue(latch.await(5, TimeUnit.SECONDS));
response = listener.get(5, TimeUnit.SECONDS);
Assert.assertEquals(200, response.getStatus());
Message.Mutable connectReply = new JettyJSONContextClient().parse(response.getContentAsString())[0];
Assert.assertEquals(Channel.META_CONNECT, connectReply.getChannel());
Map<String, Object> advice = connectReply.getAdvice(false);
Assert.assertTrue(Message.RECONNECT_NONE_VALUE.equals(advice.get(Message.RECONNECT_FIELD)));