Summary of the issue:
Connecting to test.mosquitto.org or iot.eclipse.org with a keep alive of more than 5 minutes, and everything seems to work just as expected.
Connecting to my broker (both on Azure hosted VMs - one is Mosquitto and one is Emqttd), my clients don't send a ping if the keep-alive is longer than 5 minutes. They just die. The broker disconnects them eventually for not pinging. I'm not using an Azure load balancer, I'm connecting directly to the VM).
The thing is, the connected device doesn't know it's been disconnected if its over a cell network (not sure why?)
Over an Ethernet network, it'll reconnect itself as it should.
Not sure if there is something unique about the Azure VM's that is causing my disconnection/timeout issue with longer keep-alives?
Lastly, if I use a 2 minutes or shorter keep-alive, everything works.