简单的问题,您如何取消订阅来自Java API的广播?我在API中找不到任何突出的东西,我在谷歌上找不到任何东西。
Stack:Java 7,Atmosphere 2.2.3,Atmosphere-Jersey 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);
}
}
答案 0 :(得分:3)
在客户端js / jquery上,您可以调用unsubscribe
方法来关闭连接。
socket.unsubscribe(request);
在服务器端,您可以使用AtmosphereResource close方法取消订阅用户。注意您可以尝试注入AtmosphereResourceFactory
以访问所有的atmosphereResource连接。
@Inject
private AtmosphereResourceFactory resourceFactory;
然后找到唯一的UUID并关闭连接
resourceFactory.find(userUUID).close();