Как я могу уведомить клиента о запросе, инициированном другим клиентом с помощью websocket? - PullRequest
0 голосов
/ 14 февраля 2019

Я новичок в разработке программного обеспечения в целом, и я пишу бэкэнд для простого iOS-приложения с совместным доступом (которое я разработаю позже).Я использую Vapor для создания бэкэнда.

Когда пользователь отправляет запрос на отключение API, я хочу создать новое отключение и установить сеанс websocket между пользователем и драйвером.Проблема у меня в том, как я могу уведомить водителя о том, что запрос находится, и добавить его в сеанс?

Вот что я придумал до сих пор, хотя я не уверен, сработает ли это:

Когда приходит запрос на поездку, я создаю сеанс и поездкуобъект с идентификатором сессии.Когда водитель посещает вкладку «Запросы на поездки» в приложении, он отправляет запрос на получение, чтобы получить активные запросы на поездки.Когда он затем нажимает на один из запросов на поездки, он делает запрос с идентификатором сеанса этой конкретной поездки, который будет добавлен к этому сеансу.

Проблемы, с которыми я сталкиваюсь при рассмотрении вышеупомянутого решения, заключаются в том, чтосделает пользователя плакатом, а драйвер - наблюдателем, и я не уверен, что это тот путь, так как я хочу, чтобы драйвер действовал как плакат (для отправки обновлений местоположения, чтобы пользователь мог отслеживать драйвер на карте).в настоящее время).

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

Есть ли лучший способ уведомить водителя о запросе на поездку?Как я могу добиться этого?

1 Ответ

0 голосов
/ 14 февраля 2019

Во-первых, у вас возникнут проблемы при попытке установить прямое соединение между пользователем и драйвером, потому что довольно сложно напрямую подключиться к приложению на смартфоне (смена IP-адресов, NAT, брандмауэров и открытие портов являются одними из проблем).

Я бы предложил, вы реализуете какой-то REST API для запросов на поездки / поездки.Чтобы уведомить драйвер или отправить обновления пользователю, вы можете использовать push-уведомления (для iOS это APNS) или веб-сокеты.В лучшем случае как для разных ситуаций.

Вот несколько советов для дальнейшего исследования по этим темам:

Надеюсь, это поможет вам в следующих шагах.Ваш вопрос достаточно широк, чтобы быть более конкретным.

...