Приведу банальны пример про такси. Клиент заказывает такси и нажимает кнопку заказать, тут пошли данные на сервер и таксистом отправился заказ. Когда заказ принят ответ идет на сервер с данными о водителе или с чем они там приходят (не важно). Клиент получает ответ и смотрит информацию о водителе.
Как клиенту приходит ответ с информацией? Ведь там после отправки не сразу все происходит, какое то время заказ весит в ожидании пока его примут а затем приходят данные с информации конкретному клиенту когда заказ принят.
Как сделать похожую штуку, может материал есть на эту тему или еще что посоветуете почитать.
Ответ
Обычно такой функционал делается через Socket или WebSocket.
Таким образом к одному и тому же серверу подрубаются сокетным подключением и все таксисты и все клиенты.
Соответственно все подключенные к серверу могут как слать информацию к нему, так и получать от него данные.
То есть:
Клиент отправил запрос на такси через сокет. Сервер обработал запрос, передал теми же сокетами информацию о заказе всем таксистам в указанной области.
Таксист увидел заказ, нажал согласится на заказ и отправил запрос на сервер о принятии заказа. Сервер увидел запрос от таксиста и передал информацию о нем клиенту. Клиент отловил это в приложении, UI обновилось и информация о таксисте видна клиенту. При этом пока заказ не принят таким же образом по таймеру таксист может предоставлять данные клиенту о своем местоположении, например.
Можно глянуть простейший пример.
В более сложных вариантах лучше создавать отдельный поток под каждое сокетное подключение, использовать БД на сервере для сохранения каких-то постоянных данных и так далее.
Комментариев нет:
Отправить комментарий