import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.MqttTopic;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
public class ChinesejieClient extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel panel;
private JButton button;
private MqttClient client;
private String host = "tcp://192.168.21.202:1883";
// private String host = "tcp://localhost:1883";
private String userName = "admin";
private String passWord = "admin";
private MqttTopic topic;
private MqttMessage message;
private String myTopic = "test/c/+";
private JTextField jt;
public ChinesejieClient() {
this.setTitle("chinesejie"+"==="+myTopic);
try {
client = new MqttClient(host, "chinesejie", new MemoryPersistence());
connect();
} catch (Exception e) {
e.printStackTrace();
}
Container container = this.getContentPane();
panel = new JPanel();
button = new JButton("subscribe the topic");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
try {
/*MqttDeliveryToken token = topic.publish(message);
token.waitForCompletion();
System.out.println(token.isComplete() + "========");*/
// client.unsubscribe(myTopic);
// /client.unsubscribe;
client.subscribe(myTopic,2);
} catch (Exception e) {
e.printStackTrace();
}
}
});
container.setLayout(new FlowLayout());
jt = new JTextField(50);
container.add(button);
container.add(jt);
}
private void connect() {
MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(false);
options.setUserName(userName);
options.setPassword(passWord.toCharArray());
// ���ó�ʱʱ��
options.setConnectionTimeout(10);
// ���ûỰ����ʱ��
options.setKeepAliveInterval(4);
try {
client.setCallback(new MqttCallback() {
@Override
public void connectionLost(Throwable cause) {
System.out.println("connectionLost-----------");
}
@Override
public void deliveryComplete(IMqttDeliveryToken token) {
System.out.println("deliveryComplete---------"
+ token.isComplete());
}
@Override
public void messageArrived(String topic, MqttMessage arg1)
throws Exception {
System.out.println("messageArrived----------"+arg1.toString());
jt.setText(arg1.toString());
}
});
//topic = client.getTopic(myTopic);
/* message = new MqttMessage();
message.setQos(1);
message.setRetained(false);
System.out.println(message.isRetained() + "------ratained״̬");
message.setPayload(" 33".getBytes("UTF-8"));*/
client.connect(options);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ChinesejieClient s = new ChinesejieClient();
s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
s.setSize(600, 370);
s.setLocationRelativeTo(null);
s.setVisible(true);
}
}