1 package web;
2
3 import org.eclipse.paho.client.mqttv3.MqttClient;
4 import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
5 import org.eclipse.paho.client.mqttv3.MqttDeliveryToken;
6 import org.eclipse.paho.client.mqttv3.MqttException;
7 import org.eclipse.paho.client.mqttv3.MqttMessage;
8 import org.eclipse.paho.client.mqttv3.MqttPersistenceException;
9 import org.eclipse.paho.client.mqttv3.MqttTopic;
10 import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
11
12 public class Server {
13 public static final String HOST = "tcp://121.201.45.157:61613";
14 public static final String TOPIC = "queuing/queuechange";
15 private static final String clientid = "server";
16
17 private MqttClient client;
18 private MqttTopic topic;
19 private String userName = "test";
20 private String passWord = "123456";
21
22 private MqttMessage message;
23
24 public Server() throws MqttException {
25 // MemoryPersistence设置clientid的保存形式,默认为以内存保存
26 client = new MqttClient(HOST, clientid, new MemoryPersistence());
27 connect();
28 }
29
30 private void connect() {
31 MqttConnectOptions options = new MqttConnectOptions();
32 options.setCleanSession(false);
33 options.setUserName(userName);
34 options.setPassword(passWord.toCharArray());
35 // 设置超时时间
36 options.setConnectionTimeout(10);
37 // 设置会话心跳时间
38 options.setKeepAliveInterval(20);
39 try {
40 // client.setCallback(new PushCallback());
41 client.connect(options);
42 topic = client.getTopic(TOPIC);
43 } catch (Exception e) {
44 e.printStackTrace();
45 }
46 }
47
48 public void publish(MqttTopic topic, MqttMessage message) throws MqttPersistenceException, MqttException {
49 MqttDeliveryToken token = topic.publish(message);
50 token.waitForCompletion();
51 System.out.println("message is published completely! " + token.isComplete());
52 }
53
54 public static void main(String[] args) throws MqttException {
55 Server server = new Server();
56
57 server.message = new MqttMessage();
58 server.message.setQos(2);
59 server.message.setRetained(true);
60 server.message.setPayload("给客户端推送的信息".getBytes());
61 server.publish(server.topic, server.message);
62
63 System.out.println(server.message.isRetained() + "------ratained状态");
64 }
65
66 }