[英]MQTT PUBACK web sockets
我正在使用HiveMQ Websocket Client
并且在message delivery
HiveMQ Websocket Client
一些问题。 所以,我遇到了PUBACK
这个词
让我向您解释一下我的理解,然后我会问我的问题。
每当我们使用QOS1
发送消息时,hivemq服务器都会通过PUBACK
回调确认发送者。
现在,我打算订阅我的Web套接字中的onPubackReceived事件,但是该事件在发送消息后不会触发。
我的代码:
var clientId = ClientIdentifier;
mqtt = new Messaging.Client(
host,
port,
clientId);
var options = {
timeout: 3,
keepAliveInterval: 60,
useSSL: useTLS,
cleanSession: cleansession,
onSuccess: onConnect,
onFailure: function (message) {
connected = false;
setTimeout(MQTTconnect, reconnectTimeout);
}
};
mqtt.onConnectionLost = onConnectionLost;
mqtt.onMessageArrived = onMessageArrived;
mqtt.onPubackReceived = OnPubackReceived;
当连接断开并且消息到达时, onConnectionLost
和onMessageArrived
都将正确触发,但是onPubackReceived
不会触发。
请让我知道,如果我对它的理解正确,或者我做错了什么?
这不是HiveMQ问题。
我的假设是,您使用HiveMQ Websocket客户端作为实现的起点。
无论如何, Paho MQTT客户端都没有onPubackReceived
字段。 如果您提供有关您的用例的更多详细信息,或者您在消息传递中遇到什么问题,我也许可以为您指明正确的方向。
编辑:您所描述的在MQTT中称为Quality of Service 1
。 可以保证至少收到一次消息。 保持此保证并因此重新发送消息是客户端实现的工作,如果没有收到PUBACK
。 在您的应用程序中手动干预此行为将导致客户端的持久性不一致。 为了澄清起见:只需将duplicate=true
设置将不会导致消息被识别为重复项。 它还必须具有与原始messageID
相同的messageID
。 我实际上找不到关于paho.js
任何文档, paho.js
包含Quality of Service =1。但是, MQTT.js可以。
QoS 1:至少接收一次:只要客户端未从服务器收到确认,就发送和存储数据包。 MQTT确保将其接收,但是可以重复。
总结一下:
MQTT.js
可在Websocket上使用,并确保保持QoS levels
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.