1

Изучаю самостоятельно Android и столкнулся с тем, что не знаю как правильно организовать общение между клиентом и сервером.

Например, есть сервер(php) и есть клиент-1 и клиент-2. Клиент-1 посылает на сервер запрос на добавление клиента-2 "в друзья".

Как правильно сделать так, чтобы клиент-2 получил или хоть как-то отработал данный запрос в реальном времени?

И так же чтобы после того как клиент-2 ответит "согласием", клиент-1 также получил бы об этом уведомление сразу?

Хотелось бы услышать различные варианты, я же наверно буду прав предположив что отсылать запрос на проверку сервера каждые n секунд не совсем верное решение? =)

Плюс недавно услышал про Firebase Cloud Messaging (FCM), но пока не до конца понял поможет ли он мне с этим.

Буду рад любым Вашим пинкам в нужном направлении! =)

VNprk
  • 69

2 Answers2

3

Обычно, для общения в клиента и сервера в реальном времени, а также для отправки PUSH сообщений сервером клиену( т.е. клиен не отправляет запрос, сервер сам отправляет ему какую-то информация) используется протокол WebSockets.

Реализации данного протокола существуют как в Java так и в PHP. Вам нужно будет написать сервер(как я понял на PHP) который будет работать по протоколу WebSockets и обсуживать клиентов(мобильные приложения).

Вот это может быть вам полезно https://stfalcon.com/ru/blog/post/android-websocket

  • Спасибо за нужное направление, про WebSocket обязательно почитаю. – VNprk Aug 24 '18 at 02:56
2

Сырые WebSockets использовать не рекомендую.

Самое лучшее решение - Firebase Cloud Messaging (FCM).

  1. В приложение определяете обработчик пушей.
  2. С сервера отправляете пуши с помощью библиотеки вроде этой.
  3. Когда клиент получает пуш о том, что его добавляют в друзья, что-нибудь делаете. К примеру, сразу открываете Activity. После принятия/отклонения запроса на дружбу либо с помощью того же FCM посылаете сообщение, либо отправляете https запрос на ваш php сервер, а он отошлёт пуш тому, кто изначально отправил запрос на дружбу.
  • открою небольшой секрет: FCM - это обертка над websockets :) – Grundy Aug 23 '18 at 09:02
  • @Grundy обёртка, которую писала куча специалистов, которая явно лучше, чем сырые вебсокеты. Но ответ подправил, совсем не то написал, что хотел O: – Suvitruf - Andrei Apanasik Aug 23 '18 at 09:04