EMQTT測試--安裝與測試
阿新 • • 發佈:2019-02-17
我下載的是windows版
安裝
將下載的壓縮包解壓,我解壓到了D盤
命令列視窗,cd到程式目錄
控制檯模式啟動:
.\bin\emqttd console
報錯如下
無法啟動此程式,因為計算機中丟失 MSVCR120.dll。嘗試重新安裝該程式以解決次問題。
找一個MSVCR120.dll檔案,可以去網上下載,也可以在自己電腦上找
HBuilder下有
mqttfx下也有
XMind下也有
IDEA下也有
我拷貝一個mqttfx下的到Windows\System32下
然後重新執行
.\bin\emqttd console
啟動成功
登入
使用者名稱為admin密碼為public
登入上去就可以看伺服器的執行狀態了
測試
依賴
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.0.2</version>
</dependency>
Server
package com.mymqtt.myemqtt;
import java.util.Scanner;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttMessage;
public class Server {
public static void main(String[] args) throws Exception {
String host = "tcp://127.0.0.1:1883" ;
String topic = "hello";
String clientId = "server";// clientId不能重複
MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(true);
MqttClient client = new MqttClient(host, clientId);
client.connect(options);
MqttMessage message = new MqttMessage();
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入要傳送的內容:");
while (true) {
String line = scanner.nextLine();
message.setPayload(line.getBytes());
client.publish(topic, message);
}
}
}
Client
package com.mymqtt.myemqtt;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
public class Client {
public static void main(String[] args) throws Exception {
String host = "tcp://127.0.0.1:1883";
String topic = "hello";
String clientId = "12345";// clientId不能重複
// 1.設定mqtt連線屬性
MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(true);
// 2.例項化mqtt客戶端
MqttClient client = new MqttClient(host, clientId);
// 3.連線
client.connect(options);
client.setCallback(new PushCallback());
while (true) {
client.subscribe(topic, 2);
}
// client.disconnect();
}
}
PushCallback
package com.mymqtt.myemqtt;
import java.util.Date;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class PushCallback implements MqttCallback {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
public void connectionLost(Throwable cause) {
// 連線丟失後,一般在這裡面進行重連
System.out.println("連線斷開,可以做重連");
logger.info("掉線時間:{}", new Date());
}
public void deliveryComplete(IMqttDeliveryToken token) {
System.out.println("deliveryComplete---------" + token.isComplete());
}
public void messageArrived(String topic, MqttMessage message) throws Exception {
// subscribe後得到的訊息會執行到這裡面
// System.out.println(message);
System.out.println("接收訊息主題 : " + topic);
System.out.println("接收訊息Qos : " + message.getQos());
System.out.println("接收訊息內容 : " + new String(message.getPayload()));
}
}