Atmosphere Websocket Совместное использование соединения с RedisBroadCaster - PullRequest
0 голосов
/ 16 июня 2020

Я новичок ie с фреймворком Atmosphere. Я сделал это по http://async-io.org/tutorial.html. Но я не знаю, как разделить соединение между двумя серверами. Моя цель заключается в том, что с моим приложением, запущенным на 2 серверах A и B, если клиент C подключается к серверу A, я могу отправить сообщение sh с сервера B на клиент C. В листинге 7 в руководствах просто добавлен RedisBroadcaster:

@AtmosphereHandlerService(path = "/chat",
        broadcasterCache = UUIDBroadcasterCache.class,
        broadcaster = RedisBroadcaster.class,
        interceptors = { AtmosphereResourceLifecycleInterceptor.class,
                         BroadcastOnPostAtmosphereInterceptor.class,
                         TrackMessageSizeInterceptor.class,
                         HeartbeatInterceptor.class
                       })
    public class ChatRoom extends OnMessage<String> {

Но если я хочу отвечать на сообщение асинхронно, я не уверен, что ниже мой код в порядке. Мой код:

ServletContext servletContext = ServletContextFactory.getDefault().getServletContext();
BroadcasterFactory broadcasterFactory = (BroadcasterFactory) servletContext.getAttribute(BroadcasterFactory.class.getName());
Collection<Broadcaster> I = broadcasterFactory.lookupAll();
for (Broadcaster b : I) {
   for (AtmosphereResource r : b.getAtmosphereResources()) {
      if (r.uuid().equalsIgnoreCase(resourceUuid)) {
           resource = r;
      }
   }
}
resource.getResponse().write("my message");

Если у вас есть пример кода решения, поделитесь мной. Спасибо за помощь.

...