Атмосфера + Джерси: Как мне подключить несколько вещателей?JAVA

Программисты JAVA общаются здесь
Anonymous
Атмосфера + Джерси: Как мне подключить несколько вещателей?

Сообщение Anonymous »

У меня есть работающее приложение Джерси/Атмосфера/Гайс, которое имеет два ресурса атмосферы. Первый по сути является клоном примера приложения чата:

Код: Выделить всё

@Path("/chat")
@AtmosphereService(broadcaster = JerseyBroadcaster.class, path = "/chat")
public class ChatResource {

@Suspend(contentType = "application/json")
@GET
public String suspend() {
return "";
}

@Broadcast(writeEntity = false)
@POST
@Produces("application/json")
public Response broadcast(Message message) {
return new Response(message.author, message.message);
}
}
Второй — это ресурс тестовых уведомлений, который будет отправлять события на стороне сервера:

Код: Выделить всё

@Path("/notifications")
@AtmosphereService(broadcaster = JerseyBroadcaster.class, path = "/notifications")
public class NotificationsResource {

@Suspend(contentType = "application/json")
@GET
public String suspend() {
return "";
}
}
Все подключено правильно и работает нормально. Однако для отправки события на стороне сервера я выдаю:

Код: Выделить всё

MetaBroadcaster.getDefault().broadcastTo("/*", new Response(...));
Очевидно, что при этом широковещательное сообщение будет отправлено на оба ресурса. Я хочу отправлять события на стороне сервера только в ресурс уведомлений:

Код: Выделить всё

MetaBroadcaster.getDefault().broadcastTo("/notifications", new NotificationResponse(...));
Однако это не работает. Я всегда получаю следующую ошибку:

Код: Выделить всё

org.atmosphere.cpr.MetaBroadcaster - No Broadcaster matches /notifications.
Это потому, что зарегистрирован только один вещатель; JerseyBroadcaster на /*.

Вопрос: как сделать так, чтобы у этих двух ресурсов были разные вещатели с разными ID/Именами?

Подробнее здесь: https://stackoverflow.com/questions/216 ... oadcasters

Вернуться в «JAVA»