Я разрабатываю приложение Rails в качестве бэкэнда для мобильного приложения через JSON API.Я смоделировал почти все, но есть один (основной) процесс, который необходимо разработать, и я не нахожу четкого способа его реализации.
Кроме других функций, приложение должно соответствовать двум пользователям.которые отвечают определенным условиям, в основном географическим.Ради вопроса и для упрощения, скажем, ему нужно сопоставить пользователей, которые находятся близко друг к другу И которые в настоящее время ищут совпадение (это синхронный опыт), например:
- ПользовательХит "Поиск партнеров" и появляется экран загрузки
- Пользователь B нажимает "Поиск партнеров", и появляется экран загрузки
Пользователи, скажем, на расстоянии 5 км друг от друга.Опыт должен быть таким:
- Они оба видят экран загрузки в течение 5 секунд, пока «система» ищет спички поблизости (3 км).Через 5 секунд он расширяет радиус до 6 км и соответствует двум пользователям.Они оба должны перейти к экрану «Найдено совпадение».
Моя главная проблема заключается в том, как смоделировать этот статус «ищет совпадение» в Rails.Я думал о создании таблицы и модели, включая ссылку на пользователя и его позицию.Но тогда я не могу понять, как справиться с «запросом на совпадение», не попадая в ситуацию «ведущий-ведомый».
В принципе, идеальная ситуация - это ситуация, когда оба пользовательских приложения находятся в некотором роде.статус незанятости и серверная часть, в случае совпадения, может уведомить их обоих, но в этом случае процесс в серверной части должен быть не основанным на запросах, а, возможно, рабочим ... Я использую Postgres с PostgisТаким образом, сохранение позиции пользователя возможно, но не уверен, что, возможно, Redis будет лучшим выбором, учитывая количество изменяющихся строк ...
Я знаю, что я довольно расплывчатовопрос, но на самом деле вопрос заключается в том, какой подход выбрать, а не в решении на уровне кода.
Большое вам спасибо!