Минни мессенджер

занимаюсь android разработкой год+- пару месяцев, поднадоел.. и я начал смотреть в сторону Spring в частности REST API. И вот захотелось объединить это все в голову пришла идея для такого минни-мессенджера, начал искать информацию, и не смог найти можно ли как-то в android отслеживать изменение??

P/s поэтому пришел сюда сам пробовал работать в android с Retrofit2 и OkHttp, но их функционал(как я понял) Сделан только под получение и отправку данных


Ответы (1 шт):

Автор решения: Andrew

Я делал недавно чат для android и как вам уже сказали в комментариях для создания месеенджера нужно будет использовать вебсокеты. Суть в том, что приложение при старте и установлении связи с сервером будет находится в постоянной связи с сервером что позволит отслеживать любое изменение данных в режиме реального времени. Вот например как я устанавливаю соединение с сервером:

fun createWS() {
        val loggingInterceptor: HttpLoggingInterceptor = HttpLoggingInterceptor()
                .setLevel(HttpLoggingInterceptor.Level.BODY)


        client = OkHttpClient.Builder()
                .addInterceptor(AuthToken(this))
                .addInterceptor(loggingInterceptor)
                .build()

        val request = Request.Builder()
                .url(BuildConfig.CHAT_URL + getSharedPreferences("app_data", 0).getString("appl_id", "") + "/")
                .build()


        ws = client.newWebSocket(request, socketListener())
    }

то есть как можно увидеть из кода выше, я использую OkHttp и это довольно сильно облегчает жизнь. В вашем случае, нужно будет разбить общую задачу на несколько подзадач:

  1. Создание серверной части: получение и выдача информации должна происходить только после прохождения клиентом аутентификации, можно использовать ключи доступа например. Серверная часть должна выдавать данные при запросе и постоянно держать канал для связи в активном состоянии.
  2. Создание клиентской части: в приложении нужно реализовать возможность подключиться к серверу и получить оттуда например список контактов, после выборе контакта из списка нужно передать серверу например id выбранного контакта и дальше загрузить последние сообщения. Ну и разумеется добавить обработку отправки и получения информации от других клиентов. Суть соединения я думаю будет приблизительно такой: клиент - сервер - клиент

Вот есть хорошая статья про вебсокеты, туториал, документация и подобный вопрос

→ Ссылка