50,528
社区成员
发帖
与我相关
我的任务
分享
package com.weishang.my.tool.onenet;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOpti**;
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.MqttPersistenceException;
import org.eclipse.paho.client.mqttv3.MqttTopic;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
public class ServerMQTT {
//tcp://MQTT安装的服务器地址:MQTT定义的端口号
public static final String HOST = "tcp://183.230.40.39:6002";
//定义一个主题
public static final String TOPIC = "topic11";
//定义MQTT的ID,可以在MQTT服务配置中指定
private static final String clientid = "29411874";
private MqttClient client;
private MqttTopic topic11;
private String userName = "127136";
private String passWord = "vot**zWMnISycbJURMVno1=Jxw=";
private MqttMessage message;
/**
* 构造函数
* @throw**ttException
*/
public ServerMQTT() throw**ttException {
// MemoryPersistence设置clientid的保存形式,默认为以内存保存
client = new MqttClient(HOST, clientid, new MemoryPersistence());
connect();
}
/**
* 用来连接服务器
*/
private void connect() {
MqttConnectOpti** opti** = new MqttConnectOpti**();
opti**etCleanSession(false);
opti**etUserName(userName);
opti**etPassword(passWord.toCharArray());
// 设置超时时间
opti**etConnectionTimeout(10);
// 设置会话心跳时间
opti**etKeepAliveInterval(20);
try {
client.setCallback(new PushCallback());
client.connect(opti**);
topic11 = client.getTopic(TOPIC);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @param topic
* @param message
* @throw**ttPersistenceException
* @throw**ttException
*/
public void publish(MqttTopic topic , MqttMessage message) throw**ttPersistenceException,
MqttException {
MqttDeliveryToken token = topic.publish(message);
token.waitForCompletion();
System.out.println("message is published completely! "
+ t**Complete());
}
/**
* 启动入口
* @param args
* @throw**ttException
*/
public static void main(String[] args) throw**ttException {
ServerMQTT server = new ServerMQTT();
server.message = new MqttMessage();
server.message.**os(1);
server.message.setRetained(true);
server.message.setPayload("{\"cmd\":2,\"warehouse\":1,\"num\":1}".getBytes());//推送的命令
server.publish(server.topic11 , server.message);
System.out.println(server.message.isRetained() + "------ratained状态");
}
}