Node.JS: преобразование tcp в стандартный ввод / вывод

Node.JS кажется ограниченным в своей способности обновлять код в реальном времени и в своей способности автоматически изолировать исключения. Оба из которых практически по умолчанию в Java.

Один очень эффективный способ обновления в режиме реального времени - это процесс слушателя, который просто передает информацию в / из дочернего процесса. Затем для обновления слушатель запускает нового дочернего элемента (который автоматически читает обновленный код), а затем начинает отправлять запросы новому дочернему элементу, заканчивая старый дочерний элемент, когда все запросы завершены.

  • Уже есть система, которая обеспечивает эту функцию http через stdout/stdin.
  • Существует ли система, которая обеспечивает функционирование TCP-сервера или UDP-сервера через stdout/stdin.

Под этим я подразумеваю предоставление модуля, который выглядит как http или же net модуль за исключением того, что он использует stdout / stdin для базового ввода-вывода.

Аналогично этому модулю CGI

некоторые приложения нужно будет только изменить require('http') в require('cgi')

Я намерен сделать что-то подобное. Я надеюсь повторно использовать код, если он уже есть, а также легко конвертировать небольшой или специализированный веб-сервер в этот слой слушателя, который запускает множество веб-приложений. Важно, чтобы очистка происходила правильно. Соединения, которые заканчиваются или ошибка должны быть освобождены, а события / команды завершения / ошибки должны быть правильно отражены в обоих направлениях.

(Я полагаю, что распространенный способ - это прослушивание портов детьми, а родительский интерфейс - с этими портами, но я думаю, что решение stdout / stdin будет более эффективным)

2 ответа

Решение

Используйте nginx ( http://wiki.nginx.org/HttpUpstreamModule) или HAProxy. В обоих случаях вы запускаете их впереди, помечаете бэкэнд как выключенный, а затем возвращаете его обратно, когда вам нужно выполнить обновление в реальном времени.

Я не уверен, что это то, что вы ищете (на самом деле, я не уверен, что понимаю ваш вопрос), но Реми Шарп написал очень полезный модуль узла под названием nodemon. Он обещает "отслеживать любые изменения в приложении node.js и автоматически перезагружать сервер". Это может помочь с вопросом обновления кода в реальном времени.

Другие вопросы по тегам