Минни мессенджер
занимаюсь android разработкой год+- пару месяцев, поднадоел.. и я начал смотреть в сторону Spring в частности REST API. И вот захотелось объединить это все в голову пришла идея для такого минни-мессенджера, начал искать информацию, и не смог найти можно ли как-то в android отслеживать изменение??
P/s поэтому пришел сюда сам пробовал работать в android с Retrofit2 и OkHttp, но их функционал(как я понял) Сделан только под получение и отправку данных
Ответы (1 шт):
Я делал недавно чат для 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 и это довольно сильно облегчает жизнь. В вашем случае, нужно будет разбить общую задачу на несколько подзадач:
- Создание серверной части: получение и выдача информации должна происходить только после прохождения клиентом аутентификации, можно использовать ключи доступа например. Серверная часть должна выдавать данные при запросе и постоянно держать канал для связи в активном состоянии.
- Создание клиентской части: в приложении нужно реализовать возможность подключиться к серверу и получить оттуда например список контактов, после выборе контакта из списка нужно передать серверу например id выбранного контакта и дальше загрузить последние сообщения. Ну и разумеется добавить обработку отправки и получения информации от других клиентов. Суть соединения я думаю будет приблизительно такой:
клиент - сервер - клиент
Вот есть хорошая статья про вебсокеты, туториал, документация и подобный вопрос