прослушивание сокетов на клиентском и голосовом сервисе для Android-мессенджера

В настоящее время я пишу приложение для обмена мгновенными сообщениями для Android, а также серверное приложение, которое я запускаю с моего ноутбука. приложение сервера подключается к базе данных sql (на одном компьютере) и проверяет информацию для входа, создает новые учетные записи, вставляет другую информацию о разговоре в db. пока все это работает, однако мне нужно решить, как я собираюсь передать отправленные сообщения с сервера желаемому получателю.

что я до сих пор:

  1. клиент подключается к серверу и отправляет информацию о сообщении, включая отправителя, получателя и сообщение

  2. сервер хранит информацию в db и отправляет ответ, указывающий на успех или неудачу клиента отправителя

  3. клиент отправителя обновляет свои представления, чтобы отразить любые изменения в db или указать отказ

теперь у меня есть две разные идеи о том, как подойти к доставке сообщений получателю

A. создайте службу в приложении Android, которая опросит сервер для изменений в db

B. создайте серверный сокет в приложении Android, который прослушивает запросы на подключение с сервера и попросит сервер отправить каждое новое обновление клиенту

пожалуйста, дайте мне знать некоторые из плюсов и минусов этих подходов или, если они могут быть чем-то лучшим, о чем я не упоминал. Кроме того, я в основном использую java для этого, но с некоторым кодом kotlin, если это имеет значение. Я сам программист, который делает это для практики, и он действительно становится масштабным проектом по сравнению с тем, что я делал раньше. я был бы очень признателен за любую помощь, которая предоставляется. Спасибо.