onConnectionLost and onServerInitiatedDisconnect event behavior
Question
When is the onConnectionLost
and onServerInitiatedDisconnect
event triggered in HiveMQ Extension SDK?
Answer
onConnectionLost
is called for the following reasons:
The broker detects an I/O error or network failure.
The client fails to communicate within the defined Keep Alive period.
The client does not send a DISCONNECT packet before it closes the network connection.
onServerInitiatedDisconnect
is called for the following reasons:
The broker closes the network connection because of a protocol error.
When a Client Take-Over happens.
Client disconnected from the Control Center or by REST API.
The onConnectionLost
is never called for a client that is disconnected because of the Client Take-Over because this disconnect is initiated by the broker => onServerInitiatedDisconnect
.
Hint
clientService.isClientConnected(clientId)
will always give you the status of the client: connected or not connected.
If the client is connected with cleanStart=false
and its session still exists before the Client Take-Over then the output will be "connected
" else the output will be "disconnected
".