Mqtt Persist Clean
DodaTech
1 min read
In this tutorial, you'll learn about MQTT Clean Session Clears Queued Messages. We cover key concepts, practical examples, and best practices.
The Problem
Setting clean session to true drops offline queued messages.
Quick Fix
Wrong
client.connect({ clean: true }) # Never use clean for critical data
Any message published while offline is permanently lost.
Right
// Use clean session with care
function connectWithSession(clientId) {
const options = {
clientId: clientId,
clean: false, // Keep session for offline message queuing
reconnectPeriod: 10000
}
// Only use clean: true for stateless/transient clients
// e.g., mobile apps, short-lived sensors
if (isTransientDevice) {
options.clean = true
}
return mqtt.connect('mqtt://broker:1883', options)
}
// On reconnect with clean=false
client.on('connect', (connack) => {
if (connack.sessionPresent) {
console.log('Receiving offline queued messages...')
}
})
Offline messages queued at QoS 1/2 are delivered on reconnect (clean=false).
Prevention
clean = true = start fresh, no session persistence. clean = false = resume previous session. For devices that must not miss messages, use clean = false. For transient data (current temperature), clean = true is fine. MQTT 5.0 uses Session Expiry Interval instead of Clean Session flag.
DodaTech engineers apply these same patterns across Doda Browser, DodaZIP, and Durga Antivirus Pro for production IoT reliability.
FAQ
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro