4.1 Storing state 存儲狀態
客戶端和服務器必須存儲會話狀態才能提供服務質量保證。客戶端和服務器必須在會話的整個持續時間 [MQTT-4.1.0-1]中存儲會話狀態。 會話必須至少持續有效的網絡連接[MQTT-4.1.0-2]。
保留的消息不構成服務器中會話狀態的一部分。服務器應該保留此類消息,直到客戶端刪除爲止。
非規範性評論
客戶端和服務器實現的存儲功能當然在容量方面具有限制,並且可能受管理策略的約束,例如在網絡連接之間存儲會話狀態的最大時間。作爲管理員操作的結果,可以丟棄存儲會話狀態,包括對定義條件的自動響應。這具有終止會話的效果。這些操作可能由資源限制或其他操作原因引起。謹慎地評估客戶端和服務器的存儲功能以確保它們足夠。
非規範性評論
硬件或軟件故障可能導致客戶端或服務器存儲的會話狀態丟失或損壞。
非規範性評論
服務器客戶端的正常操作可能意味着存儲狀態由於管理員操作,硬件故障或軟件故障而丟失或損壞。管理員操作可以是對已定義條件的自動響應。這些操作可能由資源限制或其他操作原因引起。例如,服務器可能基於外部知識確定一條或多條消息不能再傳遞給任何當前或未來的客戶端。
非規範性評論
MQTT用戶應評估MQTT客戶端和服務器實現的存儲功能,以確保它們足以滿足其需求。
4.1.1 Non normative example 非規範性例子
例如,希望收集電錶讀數的用戶可能會決定他們需要使用QoS 1消息,因爲他們需要保護讀數免受網絡上的丟失,但是他們可能已經確定電源足夠可靠以使數據在客戶端和服務器可以存儲在易失性存儲器中,而不會有太大的丟失風險。
相反,停車計費器支付應用程序提供商可能決定不存在支付消息可能丟失的情況,因此他們要求在通過網絡傳輸之前將所有數據強制寫入非易失性存儲器。
4.2 Network Connections 網絡 連接
MQTT協議需要一個底層傳輸,它提供從客戶端到服務器和服務器到客戶端的有序,無損的字節流。
非規範性評論
用於承載MQTT 3.1的傳輸協議是[ RFC793 ]中定義的TCP / IP 。TCP / IP可用於MQTT 3.1.1。在以下也是合適的:
·TLS [RFC5246]
·WebSocket [RFC6455]
非規範性評論
TCP端口8883和1883分別在IANA註冊,用於MQTT TLS和非TLS通信。
諸如用戶數據報協議 (UDP)之類的無連接網絡傳輸本身並不合適,因爲它們可能丟失或重新排序數據。