Android MVP — Архитектура реального времени с RxJava и Socket.IO — Часть 1
Это первая часть серии Android MVP Realtime Architecture и
Обзор
Большинство из нас, разработчиков Android, создавали приложения, используя архитектуру MVP. Обычное приложение для Android включает вызовы HTTP API на сервер, получение некоторых данных и рендеринг представления. Используя эти вызовы API, вы можете выполнять такие вещи, как
- Заказ такси
- Заказ обеда
- Перевод денег и др.
Как видите, API-интерфейсы HTTP довольно просты, масштабируемы, и с их помощью можно сделать многое. Как только вы изучите MVP с RxJava и Retrofit, вы будете готовы покорить мир своим удивительным приложением. Ура!!
Это чувство удивительности быстро сменяется замешательством в тот момент, когда вы пытаетесь создавать приложения в реальном времени, такие как
- Приложение для чата
- Многопользовательское игровое приложение
- Приложение для обновления цен на акции в реальном времени и т. д.
1. Что такое приложение реального времени?
Допустим, два игрока играют в покер через приложение для Android. Если первый игрок делает ход, другой игрок немедленно обновляется. Точно так же в случае чата, если один пользователь отправляет сообщение, другой пользователь немедленно получает сообщение. Вот что такое приложение реального времени.
2. Поток событий в реальном времени
Если мы попытаемся нарисовать простую архитектуру потока событий в реальном времени, она будет выглядеть примерно так.
Пользователи Android общаются в режиме реального времени.
Ход событий такой двунаправленный. Пользователь может отправлять события на серверы, и в то же время сервер может отправлять события пользователю. Проще говоря, приложение реального времени — это приложение, способное отправлять и получать события.
3. Эй! Я использую Retrofit и OkHttp. Как мне сделать мое приложение в реальном времени?
ТЛ; ДР. Вы не можете.
Теперь, Retrofit и OkHttp, обе эти библиотеки используют HTTP в качестве транспортного протокола. HTTP следует модели запрос-ответ. Здесь клиент отправляет запрос на сервер, а сервер возвращает ответ.
Клиент всегда может связаться с сервером. Однако сервер не может связаться с клиентом. Это потому что, HTTP не является двунаправленным. Сама природа HTTP не позволяет нам создавать приложения реального времени.
Можно возразить, что можно постоянно опрашивать сервер. Так вы сможете быстрее получать обновления. Но опрос не очень ресурсоемкий. А когда дело доходит до приложения для Android, опрос может разрядить батарею, создать плохой UX и может привести к тому, что пользователь удалит приложение.
Теперь, если сервер хочет отправить события клиенту, это может произойти через push-уведомление. Push-уведомление не является частью HTTP. Чтобы включить push-уведомления, вам потребуются сторонние библиотеки, такие как Firebase или APN. Без этих библиотек, используя обычную настройку клиент-сервер HTTP, этого просто не произойдет.
4. Socket.IO спешит на помощь!
Socket.IO использует веб-сокеты и следует модели pub/sub. для отправки и получения событий. Pub/Sub означает издатель/подписчик. Здесь издатель — это объект, который генерирует событие и публикует его в теме. Подписчик — это объект, который прослушивает тему и использует сгенерированные события.
Pub/Sub, в отличие от HTTP, позволяет обмениваться данными между двумя объектами в двух направлениях.
Таким образом, с технической точки зрения, любая библиотека, следующая за pub/sub, может быть использована для создания приложения реального времени. Некоторые общие библиотеки, которые помогут вам в этом,
- Сокет.IO
- толкатель
- Облачные сообщения Firebase
Ради этой статьи и примеров кода я буду придерживаться Socket.IO.
5. Архитектура Android MVP в реальном времени с Socket.IO
В Android MVP представление отвечает за рендеринг пользовательского интерфейса, презентатор отвечает за представление данных, а репозиторий отвечает за получение данных.
Таким образом, чтобы приложение работало в режиме реального времени, оно должно иметь возможность публиковать события и подписываться на них. Проще говоря, отправлять и получать события. Основываясь на том, что мы знаем, если мы попытаемся нарисовать архитектуру, она будет выглядеть примерно так.
Архитектура Android MVP в реальном времени
Чтобы приложение работало в режиме реального времени,
- Репозиторий и Сервер должен иметь возможность отправлять и получать события.
- Ведущий и Репозиторий должен иметь возможность отправлять и получать события.
- Вид и Ведущий должен иметь возможность отправлять и получать события.
Вау!
Заключить
В этой статье мы рассмотрели архитектуру MVP Realtime. Во второй части этой статьи мы реализуем приложение для Android, использующее архитектуру MVP, RxJava, Socket.IO и Realtime.
Оставайтесь с нами для второй части Android MVP — Архитектура реального времени с RxJava и Socket.IO. Дайте мне знать ваши мысли и пока до свидания.
Удачного кодирования!
Хотите создать мобильное приложение? Обратитесь ко мне.
Если у вас есть идея и вы хотите преобразовать ее в приложение для Android, свяжитесь со мной. Помимо разработки под Android, я помогал людям в поиске клиентов, определении бизнес-модели и других вещах, связанных со стартапами.
Вы можете связаться со мной по адресу:
Спасибо!