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), they don't send a ping if the keepalive is longer than 5 minutes. They just die. The broker disconnects them eventually for not pinging.
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 minute or shorter keep alive, everything works.