package top.luckysmile.mqtt.client.server; import java.util.List; import javax.swing.JOptionPane; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttException; import top.luckysmile.mqtt.client.view.MQTTChatView; /** * 取消订阅,会话列表里的按钮最终触发的事件 * @author minuy * */ public class closeTopic { /** * 取消订阅并关闭会话视图 * @param vo 视图操作类,用于关闭会话视图 * @param MC Mqtt客户端对象,取消订阅用 * @param chatSession 管理器的视图列表,用于查找关闭是否有效 * @param mcv 发起取消订阅请求的视图,用于搜索 * @param mqttServerManage 管理器,回调用 */ public closeTopic(ViewOpt vo,MqttClient MC,List chatSession,MQTTChatView mcv, MqttServerManage mqttServerManage) { //找主题 for (int i = 0; i < chatSession.size(); i++) { //如果会话主题和要关闭的主题相同 if(mcv.getJlbChatTopic().getText().equals(chatSession.get(i).getJlbChatTopic().getText())) { try { //取消订阅主题 MC.unsubscribe(mcv.getJlbChatTopic().getText()); //把主题从主题列表和视图列表中删除 mqttServerManage.SubDrop(mcv.getJlbChatTopic().getText()); mqttServerManage.removeSession(mcv); //关闭视图 vo.CloseSessionWindow(mcv.getJlbChatTopic().getText()); } catch (MqttException e) { System.out.println(e.toString()); JOptionPane.showMessageDialog(null, "没有订阅这个主题!","错误",2); } } } } }