apollo mqtt client instance

package com.intbull.mqtt.client;

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;

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.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.MqttTopic;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;

public class Server extends JFrame {
    private static final long serialVersionUID = 1L;
    private JPanel panelNorth, panelSouth;
    private JButton button, buttonSend;
    private JEditorPane editUserName, editPassword, editTopic, editPublish, editMessage;
    private JTextArea area;
    private MqttClient client;
    private String host = "tcp://127.0.0.1:61613";
//    private String host = "tcp://localhost:1883";

    public Server() {
        Container container = this.getContentPane();
        panelNorth = new JPanel();
        button = new JButton("连接&绑定主题");
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
            connect(editUserName.getText(), editPassword.getText(), editTopic.getText());
            }
        });
        panelNorth.add(button);
       
        editUserName = new JEditorPane();
        editUserName.setText("用户名");
        panelNorth.add(editUserName);
       
        editPassword = new JEditorPane();
        editPassword.setText("密码");
        panelNorth.add(editPassword);

        editTopic = new JEditorPane();
        editTopic.setText("订阅主题");
        panelNorth.add(editTopic);
       
        editPublish = new JEditorPane();
        editPublish.setText("发布主题");
        panelNorth.add(editPublish);
       
        container.add(panelNorth, "North");

        panelSouth = new JPanel();
        editMessage = new JEditorPane();
        buttonSend = new JButton("发送");
        buttonSend.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                try {
               
                String content = editMessage.getText();
                if(content!=null){
                MqttTopic topic = client.getTopic(editPublish.getText());
               
                MqttMessage message = new MqttMessage();
                message.setQos(1);
                message.setRetained(true);
                System.out.println(message.isRetained()+"------ratained状态");
                message.setPayload(content.getBytes());
                MqttDeliveryToken token = topic.publish(message);
                token.waitForCompletion();
                System.out.println(token.isComplete()+"========");
                }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
        panelSouth.add(editMessage);
        panelSouth.add(buttonSend);
        container.add(panelSouth,"South");

       
        area = new JTextArea();
        area.setText("record");
        container.add(area,"Center");

    }

    private void connect(String userName, String passWord, String topic) {

        MqttConnectOptions options = new MqttConnectOptions();
        options.setCleanSession(false);
        options.setUserName(userName);
        options.setPassword(passWord.toCharArray());
        // 设置超时时间
        options.setConnectionTimeout(10);
        // 设置会话心跳时间
        options.setKeepAliveInterval(20);
        try {
        client = new MqttClient(host, userName,
                     new MemoryPersistence());
            client.setCallback(new MqttCallback() {

                @Override
                public void connectionLost(Throwable cause) {
                    System.out.println("connectionLost-----------");
                    area.append("\nconnectionLost-----------");
                }

                @Override
                public void deliveryComplete(IMqttDeliveryToken token) {
                    System.out.println("deliveryComplete---------"+token.isComplete());
                    area.append("\ndeliveryComplete---------"+token.isComplete());
                }

                @Override
                public void messageArrived(String topic, MqttMessage arg1)
                        throws Exception {
                    System.out.println("messageArrived----------"+topic+"----------"+arg1.toString());
                    area.append("\nmessageArrived----------"+topic+"----------"+arg1.toString());
                }
            });
           
            client.connect(options);
            client.subscribe(topic, 1);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
        Server s = new Server();
        s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        s.setSize(600, 370);
        s.setLocationRelativeTo(null);
        s.setVisible(true);
    }
}

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326778656&siteId=291194637