2014-11-10 2 views
1

Простой вопрос, как отказаться от подписки на трансляцию с Java API? Я не могу найти что-либо в API, который выделяется, и я не могу найти что-либо в Google.Атмосфера: Как отказаться от подписки на широковещательную рассылку

Stack: Java 7, атмосфера 2.2.3, атмосфера-Джерси 2.2.3, Servlet 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); 
    } 
} 

ответ

3

на стороне клиента JS/JQuery вы можете позвонить unsubscribe метод закрытия соединения.

socket.unsubscribe(request); 

В то время как на стороне сервера, вы можете использовать AtmosphereResource close метод отписать на user.Note вы можете попытаться придать AtmosphereResourceFactory, чтобы иметь доступ ко всей связи atmosphereResource.

@Inject 
private AtmosphereResourceFactory resourceFactory; 

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

resourceFactory.find(userUUID).close(); 
+1

Похоже, мне не нужно, чтобы отказаться от подписки на стороне сервера и может просто позволить клиенту справиться с этим. Это верно ? – AfterWorkGuinness

+1

ну да, обычно клиентская сторона делает отписаться. – user23123412

Смежные вопросы