TGViewer
Node.js Recipes Node.js Recipes @node_recipes · 3.1K subscribers
Post #73 1.46K
Что такое Race Condition на клиенте?
#architecture

В одном из #nodejs чатов задали вопрос: "как думаете, норм использовать API для начальной подгрузки большого кол-ва контента, а socket.io для отправки на клиент единичных данных?" (c) Так делать не стоит. Состояние при таком подходе будет зависит от того, в каком порядке пришли сообщения. Это называется Race Condition. Чтобы такой ситуаций не было, необходимо использовать только один протокол для получения данных.

Конкретный пример: вы делаете страницу Ethereum Blocks с live updates, получая начальные данные по REST и подпиской на обновления по WS. Клиент или теряет блок, или получить его дважды. Пускай скорость генерации блоков 1 в 13 секунд, а задержки данных между WS и REST 0.5 секунды. Расчет показывает, что есть 4% шанс не корректного поведения.

Варианты решения:
👎 REST с запросами с setInterval – не верное архитектурное решение из-за повышенной нагрузки на сервер. Попытки решить через Etag
👍 WS с созданием подписки на требуемые обновления. В момент создания подписки сервер отдает текущее состояние ресурса. Необходимо предусмотреть переконект с учетом последнего сообщения и множественные подписки.
🔥 Server Sent Events создан именно для таких случаев. Имеет переподключение из коробки, а подписка определяется по URL. Требует HTTP2, чтобы избежать ограничения браузера в 4 соединения. Имеет разную реализацию в браузерах, что решается с помощью event-source-polyfill. Имеет поддержку в Nest.js, см. server-sent-events
  • 👍 1
More from @node_recipes
  1. Jan 5, 2026По всьому світу проходять Cursor Meetups, де локальні спільноти діляться досвідом використ…
  2. Jan 5, 2026Думки на вихідних: Full Stack Learning Подивився останнє відео Сергія Немчинського про фул…
  3. Dec 31, 2025Залишаються лічені години 2025-го. І будьмо чесними: сам перехід на 2026-й нічого автомати…
  4. Dec 25, 2025Моє відкриття 2025 року, як доповідача, це Napkin.ai. На малюнку приклад того, як Napkin г…
  5. Dec 23, 2025А ось й ChatGPT додав 2025 review feature. Авжеж в мене half coded Nest.js app, як ще :)
  6. Dec 23, 2025Моє технічне відкриття 2025 року — centrifugal.dev У 2025-му я багато працював із реальним…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →