Simple question, how do you unsubscribe from a broadcast from the Java API ? I can't find anything in the API that stands out and I can't find anything on Google.
Stack: Java 7, Atmosphere 2.2.3, Atmosphere-Jersey 2.2.3, Servlet 3, Tomcat 7
This is how I'm subscribing:
@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));
}
}
This is how I'm broadcasting:
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);
}
}
On a client side js/jquery you can call
unsubscribe
method to close connection.While in the server side, you can use AtmosphereResource close method to unsubscribe the user.Note you can try to inject
AtmosphereResourceFactory
to have an access to all atmosphereResource connection.then find the unique UUID and close the connection