TCP connection can be open and idle for hours without keep alives. This can easily be configured with kernel parameters:
https://www.tldp.org/HOWTO/TCP-Keepalive-HOWTO/usingkeepaliv...
I suspect the hard bit for normal apps is keeping the app active on the device while it is in the background. Google has their FCM receiver running as a low level service so can make sure it is always running.