Сценарий, который я пытаюсь реализовать, выглядит следующим образом:
1) Приостановить весь входящий запрос в обработчике @GET
2) Добавить ресурсы входящего запроса в вещательную
3) Периодически публикуйте данные с интервалами с помощью Broadcaster.broadcast()
Пробовал использовать атмосферу-трикотаж и @Schedule аннотации, но не смог опубликовать данные. Не уверен, может ли Executorservice соответствовать этому сценарию. Есть что-то, что пропущено для публикации с сервера периодически.
Незлое руководство!
Broadcaster.scheduledFixedBroadcast() выглядит правильно, чтобы периодически нажимать сервер.
Планирование вещателя с серверной стороны,
@PathParam("topic")
Broadcaster broadcaster;
@Suspend(contentType = "application/json")
@GET
public SuspendResponse<String> search() {
if (broadcaster.getAtmosphereResources().size() == 0) {
broadcaster.scheduleFixedBroadcast(new Callable<String>() {
public String call() throws Exception {
// Wait for the connection to be suspended.
broadcaster.broadcast("broadcast");
return null;
}
}, 5000, TimeUnit.MILLISECONDS);
}
return new SuspendResponse.SuspendResponseBuilder<String>()
.broadcaster(broadcaster)
.outputComments(true)
.addListener(new EventsLogger() {
@Override
public void onSuspend(
AtmosphereResourceEvent event) {
super.onSuspend(event);
}
}).build();
}