Как подобрать api real-time соединения для gps-отслеживания?

Добрый день!

Разрабатываю CRM для своих нужд, которая в основном будет отправлять push-уведомления мобильным устройствам, а также собирать их координаты при трекинге с использованием Google Maps. Координаты отправляет одно устройство, сервер принимает и отправляет другим, кому нужно. Вопрос в том, что лучше использовать для real-time? Серверный язык - PHP.
Пробую центрифугу, главное предназначение - броадкастинг уведомлении по каналам, к серверу данные отправляются обычным ajax запросом. Требует виртуального сервера. Бесплатная.
Firebase - везде пишут, что разработка идет быстро, т.к. не требует серверного кода и вообще не надо морочить голову за доставку push-уведомлении. Условно-бесплатная, но думаю проект уложится в их бесплатный лимит. Жирный минус - документация, все разбросано и пока сделать тестовый рабочий запрос не получается.
NodeJS + Socket.IO - слышал/читал, но не пробовал еще, но вместо PHP использовать JS - как-то не особо радует. Также требует виртуального сервера. Бесплатная

Также стоит вопрос гарантированной доставки, т.е. если пропала сеть, то уведомление в любом случае должно доставиться после подключения к сети и наличии интернета. Эту проблему скорее всего решает Firebase, не проверял, но так думаю, что имея собственную базу эта функция должна быть. Для центрифуги и NodeJS+ Socket.IO для решения этой проблемы думаю нужно дописать код на стороне клиента, который будет сверять свои данные с данными на сервере при подключении к определенному каналу.

Надеюсь суть разъяснил понятно, что посоветуете? С чем проще и которая апишка более подходит для моей ситуации?
  • Вопрос задан
  • 109 просмотров
Пригласить эксперта
Ответы на вопрос 1
t-alexashka
@t-alexashka
Сразу пишу legacy код
Вам может понравиться это: https://github.com/walkor/phpsocket.io

(основан на более низкоуровневом workerman).

P.S. гарантия доставки осуществляется либо обратным вызовом со стороны клиента при получении сообщения. Например пришло сообщение {'id': 123, 'message': 'hello'}, в ответ в какой нибудь канал клиент должен отослать событие например {'event':'read', 'id': 123}. и пока сервер не получит это сообщение о прочтении - будет продолжать раз в какое-то время его отправлять заново.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы