Ohar
@Ohar
Фронт-разработчик

Как изменять статус обработки REST-запроса через WebSockets?

Есть SPA на AngularJS, которое работает с NodeJS-сервером через REST API.

Хочется научить его получать от сервера изменения статуса обработки REST-запросов, потому как некоторые работают довольно долго.

Пример изменений статуса обработки REST-запроса.

  1. Запрос отправлен
  2. Запрос получен
  3. Получение данных из БД 1
  4. Получение данных из БД 2
  5. Связка данных
  6. Подготовка ответа


Это вроде как отлично ложится на WebSockets, но чем дальше в лес, тем толще волки.

Непонятно, как увязывать REST-запросы с конкретным клиентом, который открыл подключение по сокету.
Вести словарь соответствия id клиента и номера сессии сокетов? Тогда словарь будет при переподключении бесконтрольно расти, что пахнет протечкой памяти.

Или вообще поменять REST на сокеты? Тогда нужно будет всё кеширование ручками делать.

Куда ни кинь — всюду клин.
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ответы на вопрос 1
impeee
@impeee
nodejs/erlang developer
В RESTful есть такая практика: возвращать в качестве ответа пользователю не данные, а статус 202 Accepted вместе с линком, по которому клиент уже сам отслеживает состояние процесса, т.е. те же http-запросы. Линк примерно такого плана: /resource/id, id должен быть всегда уникален, без коллизий. Создать нужно механизм очередей на серверной стороне.
Ответ написан
Ваш ответ на вопрос

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

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