не очень понял про мобильные данные. как я знаю есть потоковая передача данных (просто кидаем в сокет данные и все) и блочная, когда кидаем пакет и ждем на него ответ. в вашем случае происходит потоковая или блочная передача?
Изначально просто в сокет слал данные (поточная) . Подтверждение доставки не критично. Сервер на py быстро загнулся от большого количества сообщений, опоздание было порядка 15 секунд. Далее перепробовал кучу вариантов node, go, си. В итоге не стал велосипед изобретать и начал использовать nchan. Беда в том что сообщения в комнате начали эхом возвращаться к отправителю. Что увеличивало в 2 раза количества трафика. Сейчас нашёл другре решение. Отправитель шлёт данные не в сокет а обычным POST запросом, а получатель берет их уже в сокете. Это решает обе серьёзные проблемы: 1) нет эхо сообщений которые забивают канал. 2) При обрыве связи нет серьёзных проблем с восстановлением, так как это обычный http запрос. Либу прикрутил okhttp3