final AtomicReference<EventPOJO> open = new AtomicReference<EventPOJO>();
final AtomicReference<EventPOJO> close = new AtomicReference<EventPOJO>();
Client client = ClientFactory.getDefault().newClient();
RequestBuilder request = client.newRequestBuilder()
.method(Request.METHOD.GET)
.uri(targetUrl + "/suspend")
.decoder(new Decoder<String, POJO>() {
@Override
public POJO decode(Event e, String s) {
if (e.equals(Event.MESSAGE)) {
return new POJO(s);
} else {
return null;
}
}
})
.decoder(new Decoder<String, EventPOJO>() {
@Override
public EventPOJO decode(Event e, String s) {
return new EventPOJO(e, s);
}
})
.transport(transport());
Socket socket = client.create();
socket.on(new Function<POJO>() {
@Override
public void on(POJO t) {
response.set(t);
latch.countDown();
}
}).on(Event.OPEN, new Function<EventPOJO>() {
@Override
public void on(EventPOJO t) {
open.set(t);
latch.countDown();
}
}).on(Event.CLOSE, new Function<EventPOJO>() {
@Override
public void on(EventPOJO t) {
close.set(t);
xlatch.countDown();
}
}).open(request.build()).fire("echo");
latch.await(5, TimeUnit.SECONDS);
socket.close();