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);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值