目標是使用mqtt協議發送數據。 Java項目(tempSensor)使用mqtt協議和使用mqtt預訂tempvalue的node.js生成臨時值。 node.js和java項目都使用相同的密鑰進行發佈/訂閱。我能夠使用java項目發佈數據,並且還可以在node.js中訂閱數據。但數據不是可讀格式。怎麼做 ?所以數據的格式是可讀的。 結構TempStruct是如下:node.js和java之間的mqtt通信
public class TempStruct implements Serializable {
private static final long serialVersionUID = 1L;
private double tempValue;
public double gettempValue() {
return tempValue;
}
private String unitOfMeasurement;
public String getunitOfMeasurement() {
return unitOfMeasurement;
}
public TempStruct(double tempValue, String unitOfMeasurement) {
this.tempValue = tempValue;
this.unitOfMeasurement = unitOfMeasurement;
}
public String toJSON() {
String json = String.format("{'tempValue': %f, 'unitOfMeasurement': '%s'}", tempValue, unitOfMeasurement);
return json;
}
}
使用MQTT其中公佈的數據代碼是如下:
Logger.log(myDeviceInfo.getName(), "TemperatureSensor",
"Publishing tempMeasurement");
System.out.println("JSON Value...."+newValue.toJSON());
try {
this.myPubSubMiddleware.publish("tempMeasurement",
newValue.toJSON().getBytes("utf-8"), myDeviceInfo);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
其接收使用MQTT數據代碼如下所示:(Node.js的)
var mqtt=require('mqtt');
var client=mqtt.connect('mqtt://test.mosquitto.org:1883');
var data;
client.subscribe('tempMeasurement');
client.on('message',function(topic,payload){
//arg=JSON.stringify(arg);
console.log("In Message......");
var tempStruct = JSON.parse(payload);
console.log("tempValue: "+tempStruct.tempValue);
});
您必須將數據轉換爲不同的數據。 JSON可能是一個不錯的選擇 – Nitek
@ Nitek-將盡力回覆你。謝謝 – abc
@ Nitek - 請你檢查後回答我?謝謝 – abc