Атмосфера: Как отписаться от трансляции

Простой вопрос, как отписаться от трансляции из Java API? Я не могу найти ничего особенного в API и ничего не могу найти в Google.

Стек: Java 7, Атмосфера 2.2.3, Атмосфера-Джерси 2.2.3, Сервлет 3, Tomcat 7

Я подписываюсь следующим образом:

@Path("subscription")
public class CurrencyPairSubscription {

    @GET
    @Suspend
    @Path("{pair}")
    public Broadcastable subscribeToQuote(@PathParam("pair") String pair,
            @Context final BroadcasterFactory broadcasterFactory) {

        return new Broadcastable(broadcasterFactory.lookup(pair, true));
    }
}

Вот как я веду трансляцию:

public class BroadcasterServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    public void init() {

        System.out.println("Broadcast Servlet init");
        AtmosphereFramework framework = (AtmosphereFramework) getServletContext()
                .getAttribute("AtmosphereServlet");
        MetaBroadcaster metaBroadcaster = framework.metaBroadcaster();


        metaBroadcaster.scheduleTo(RandomQuoteGenerator.generate()
                .getIdentifier(), RandomQuoteGenerator.retrieveLastQuote(), 15,
                TimeUnit.MILLISECONDS);
    }
}

person AfterWorkGuinness    schedule 10.11.2014    source источник


Ответы (1)


На стороне клиента js/jquery вы можете вызвать метод unsubscribe, чтобы закрыть соединение.

socket.unsubscribe(request);

На стороне сервера вы можете использовать AtmosphereResource close для отмены подписки пользователя. Обратите внимание, что вы можете попробовать внедрить AtmosphereResourceFactory, чтобы получить доступ ко всем соединениям в атмосфереResource.

@Inject
private AtmosphereResourceFactory resourceFactory;

затем найдите уникальный UUID и закройте соединение

resourceFactory.find(userUUID).close();
person Ken de Guzman    schedule 11.11.2014
comment
Похоже, мне не нужно отписываться на стороне сервера, и я могу просто позволить клиенту справиться с этим. Это правильно ? - person AfterWorkGuinness; 11.11.2014
comment
ну да, обычно клиентская сторона делает отписку. - person Ken de Guzman; 11.11.2014