Sam*_*Das 1 java android mqtt paho
我在Android应用程序上使用Paho java客户端库.代码如下.
MqttAndroidClient client_Panic = new MqttAndroidClient(this.getApplicationContext(), serverURL, CLIENT_ID);
try {
MqttConnectOptions options = new MqttConnectOptions();
options.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1);
options.setCleanSession(false);
options.setKeepAliveInterval(90);
options.setConnectionTimeout(100);
IMqttToken token = client_Panic.connect(options);
//Few callbacks
} catch (MqttException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
并在需要时发布消息
String msg = "messages";
MqttMessage message = new MqttMessage();
message.setPayload(msg.getBytes());
try {
client_Panic.publish(topic, message);
} catch (MqttException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但不知何故不完整.我需要的是,每当其他客户订阅同一主题时,应该获得最后保留的消息,哪个发布者可能早先发布过.
为此我搜索了他们的文档,我得到了
protected void setWill(String topic,
MqttMessage msg,
int qos,
boolean retained)
Run Code Online (Sandbox Code Playgroud)
因此,setWill根据文档可以选择启用保留选项.所以我尝试了
options.setConnectionTimeout(100);
options.setWill(topic,null,2,true); // This place I added
IMqttToken token = client_Panic.connect(options);
Run Code Online (Sandbox Code Playgroud)
但是java.lang.IllegalArgumentException at org.eclipse.paho.client.mqttv3.MqttConnectOptions.validateWill在包含的行上有错误options.setWill.
setWill是retained true在android上启用的正确方法,如果是,则需要提供哪些参数,否则它们是在android上启用它的任何其他方法?TIA.
Will是一个非常具体的消息,只有在客户端与代理断开连接时才会发布(例如网络丢弃).
您不能将null消息设置为Will消息,这是错误的内容.
保留状态特定于给定消息,因此您不会全局设置它,它会在每条消息上设置.在您调用setRetained(boolean)例如时将消息标记为保留
String msg = "messages";
MqttMessage message = new MqttMessage();
message.setRetained(true);
message.setPayload(msg.getBytes());
try {
client_Panic.publish(topic, message);
} catch (MqttException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2438 次 |
| 最近记录: |