[英]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.