Field guide · HTTP server
HTTP-сервер Node.js: что важно в production?
Короткий ответ
Начинайте не с throughput, а с явных границ: маршрутизация должна иметь предсказуемый порядок, чтение body - лимит, async handler - timeout и путь ошибки, а остановка - отдельный drain-контракт. swm-core 5.1.2 собирает эти границы в HTTP/WebSocket server layer поверх нативного транспорта.
- 5.1.2
- swm-core
- HTTP + WS
- один server instance
- 22 / 24
- Node.js
Границы ответа
Это не рейтинг фреймворков. Страница описывает проверяемый контракт @swarmmachina/swm-core 5.1.2 для Node.js 22/24; TLS, reverse proxy и развёртывание остаются внешними границами системы.
Минимальный контракт HTTP-сервера Node.js
| Область | Явный контракт | Проверка до запуска |
|---|---|---|
| Маршруты | Порядок сопоставления, method и fallback не зависят от случайной регистрации handlers. | Покройте статические, параметризованные, method mismatch и not-found пути. |
| Request body | Лимиты определены для всего сервера и при необходимости для отдельного route. | Проверьте oversized body, отсутствующий content-length и остановку чтения после отказа. |
| Заголовки | Prefetch берёт только нужные headers, а transport.trustedProxy отдельно задаёт header и точное число hops. | Проверьте отсутствие лишнего чтения, подмену forwarded-заголовков и fallback к upstream peer. |
| Async-работа | Timeout и путь ошибки не оставляют request context или response в неопределённом состоянии. | Интеграционный тест покрывает таймаут, отклонённый promise и двойной ответ. |
| Наблюдаемость | Ошибки передаются асинхронно и не превращают delivery path в неограниченную очередь. | Проверьте counters, redaction и поведение при медленном обработчике ошибок. |
| Остановка | Новые запросы прекращаются, активная работа получает время на drain, затем сокет закрывается. | Запустите тест с долгим запросом и зафиксируйте результат до истечения shutdown timeout. |
Как выбрать уровень абстракции
- 01
Нужен API-сервис с HTTP и WebSocket
Начинайте со swm-coreRouting, контексты, body budgets, timeouts, backpressure и shutdown уже входят в server contract.
- 02
Нужен только совместимый низкоуровневый API
Смотрите swm-uwsТогда application layer самостоятельно владеет routing, admission control и lifecycle.
- 03
Сравниваете производительность
Сначала зафиксируйте сценарийThroughput без payload, concurrency, tail latency и resource limits не отвечает на вопрос о production-годности.
Что не следует обещать по одной цифре
- Быстрый response на пустом GET не доказывает безопасную обработку body, ошибок или медленных клиентов.
- TLS, ограничения reverse proxy и admission control должны быть согласованы за пределами Node.js process.
- Не включайте trustedProxy на публичном listener: ближайший proxy должен перезаписывать или очищать выбранный заголовок.
- Выборочный prefetch уменьшает работу на запросе, но не заменяет измерение на собственном трафике.
Первичные источники
Заявленные возможности привязаны к фиксированному README и package metadata опубликованного релиза.