Я работаю над требованием, при котором 2 пользователя могут выполнять вызов API, а сервер сгенерирует URL-адрес и вернет его для присоединения пользователей. Этот URL-адрес будет одинаковым для обоих пользователей и приведет их в одно и то же лобби.
Однако сервер сгенерирует URL-адрес, только если canUserGenerateUrl(userA)
истинно.
Например: Давайте предположим, что User A
имеет область действия для генерации URL, пользователю B придется ждать, если его / ее клиент сначала вызовет API.
Сценарий 1:
Пользователь A ---> Вызов API ----> сервер генерирует и сохраняет URL-адрес в БД ---> Возвращает URL-адрес для пользователя A, чтобы присоединиться
Пользователь B ---> Вызов API ----> сервер определяет URL-адрес, уже созданный для встречи между 2 ----> возвращает URL-адрес из БД
Это счастливый поток.
Сценарий 2:
Пользователь B ----> API call ----> сервер не может сгенерировать URL-адрес, поскольку у пользователя нет области действия ---> возвращает исключение, и интерфейс перенаправляет пользователя B на страницу ожидания
Пользователь A ----> API-вызов - ---> сервер генерирует URL-адрес, сохраняет его в базе данных и возвращает пользователю A ----> Пользователь A присоединяется к лобби
Теперь проблема:
В сценарии 2 я нужен способ для пользователя B получать уведомление (я предполагаю, веб-сокет) со сгенерированным URL-адресом для лобби. Затем внешний интерфейс пользователя B может обновить / присоединиться к лобби с пользователем A, у которого была возможность создавать / запускать лобби.
Итак, как клиент может подписаться на веб-сокет в java spring и получать сообщения при успешном завершении полностью отдельного вызова API. Вызов, который даже не будет отправлен через веб-сокет.