А были какие-то особые требования в вашем случае, что вы аж написали свой мессенджер?
Мы рассматривали вариант взять что-то готовое из FOSS. Было условие, что это должен быть Kotlin или Java, потому что мы не расширяем зоопарк языков и технологий без острой необходимости. Также было условие, что сервер должен быть отказоустойчив и горизонтально масштабируем. На этом поиск готовых решений и закончился, потому что единственное, что как-то близко подходило под наши требования - это Tinode, но он на Go.
Кроме того, написание своего сервера позволило нам хорошо интегрироваться с нашими сервисами: авторизации/аутентификации, менеджмента пользователей, рассылки пуш-уведомлений, аналитики и т.п.