/jibrel-react-interview

Primary LanguageJavaScriptOtherNOASSERTION

jibrel

HowTo

  1. Install server and client modules npm i
  2. Use npm start on server and client
  3. To enable server logs - use export DEBUG="*:log,*:err"
  4. To enable logs in browser - execute window.localStorage.debug = '*:log,*:error,*:warn' in console

Задача

часть 1

  • необходимо сделать node.js сервер
  • у сервера есть REST эндпоинт, который:
    • получает POST запросы с произвольным JSON и возвращает ID запроса
    • отправляет запрос на "обработку" которая длится рандомное количество времени
    • по GET принимает ID запроса и отдает статус обработки true/false
  • также у сервера есть эндпоинт с вебсокетом работающий похожим образом:
    • получает сообщение
    • отправляет на обработку. Тут уже другая очередь и другой алгоритм, но время обработки все равно не детерменировано.
    • через рандомный интервал времени возвращает статус обработки
  • но у сервера есть баг - каждое сообщение с некоторой вероятностью теряется в процессе обработки. Очереди как никак...

часть 2

  • необходимо сделать react.js - redux - saga приложение
  • пользователь может включить/выключить свое frontend приложение
    • во включенном состоянии приложение непрерывно создает сообщения и отправялет их на сервер
    • запрашивает/получает статусы обработки созданных сообщений
    • в выключенном состоянии все коннекты к серверу обрываются
    • сообщения генерятся и отправляются непрерывным потоком - отправляя новое сообщение не ждем обработки предыдущего запроса
  • пользователю отображается страница со списком запросов, их статусом, содержанием сообщений и т.д.
  • требований к внешнему виду интерфейса нет