@Override
public void onStateChange(AtmosphereResourceEvent event) throws IOException {
ensureInitialized(event.getResource());
AtmosphereResponse response = ((AtmosphereResourceImpl) event.getResource()).getResponse(false);
if (event.getMessage() != null && List.class.isAssignableFrom(event.getMessage().getClass())) {
List<String> messages = List.class.cast(event.getMessage());
for (String t : messages) {
onMessage(event, response, t);
}
} else if (event.isClosedByApplication() || event.isClosedByClient() || event.isCancelled()) {
onDisconnect(event, response);
} else if (event.isSuspended()) {
onMessage(event, response, (String) event.getMessage());
} else if (event.isResuming()) {
onResume(event, response);
} else if (event.isResumedOnTimeout()) {
onTimeout(event, response);
}
}