Я использую Atmosphere Framework 2.0.8.
Я реализовал AtmosphereHandler в своем приложении, и у меня правильно происходит двусторонняя связь через WebSockets и Long Polling.
Я пытаюсь добавить некоторый код обработки, когда клиент отключается, чтобы очистить некоторые ресурсы, специфичные для этого клиента (т.е. у меня есть запись в таблице, которую я хочу удалить).
Я прочитал следующие записи в вики:
Уловки OnDisconnect: https://github.com/Atmosphere/atmosphere/wiki/onDisconnect-tricks Настройка прослушивателя атмосферы: https://github.com/Atmosphere/atmosphere/wiki/Configuring-Atmosphere-Listener
Я не совсем понимаю, куда я должен добавить вызов
atmosphereResource.addEventListener( new AtmosphereResourceEventListenerAdapter() {} );
В конце концов я нашел пример кода в JavaDoc для AtmosphereHandler, который регистрирует EventListener в методе onRequest(). http://atmosphere.github.io/atmosphere/apidocs/org/atmosphere/cpr/AtmosphereHandler.html
Я хотел бы знать, является ли это правильным способом сделать это?
Насколько я понимаю, AtmosphereResource представляет собой соединение между клиентом и сервером на весь срок существования этого соединения. UUID остается согласованным для объекта при нескольких вызовах метода onRequest() от одного и того же клиента. Таким образом, один и тот же объект AtmosphereResource будет добавлять EventListener каждый раз, когда вызывается метод onRequest.
Это кажется неправильным. Не приведет ли это к тому, что для каждого AtmosphereResource будут зарегистрированы тысячи EventListeners?
Кажется, что EventLister должен быть зарегистрирован только один раз для каждого AtmosphereResource.
Я чувствую, что мне здесь не хватает чего-то фундаментального. Может кто-нибудь объяснить?