제가 알고 있기로 일반적으로 알려진 TCP와 모바일네트워크는 내부적으로는 다르다고 알고 있습니다.
일반적인 TCP 같은 경우에는 특정 port로 바인딩 하면 특별한 이슈 없으면 세션이 유지되지만
모바일네트워크 같은 경우에는 어플리케이션 레벨에서 Socket을 이용하여 TCP때와 똑같이 바인드를 하여도 내부적으로 통신이 없으면 세션을 유지하지 않는것 같더군요. 모바일의 이동성을 고려한 예외처리인것 같습니다.
이 기준이 통신사마다 다르고 또 3G냐 4G냐 앞으로 나올 차기 네트워크이냐 에 따라 아마 다를거에요.
가장 현명한 선택은 GCM을 쓰거나 로컬에서 별도로 운용하고 싶다면 MQTT를 사용해 보시길 권장 드립니다.