Node.JS: преобразование tcp в стандартный ввод / вывод - PullRequest
0 голосов
/ 25 июля 2011

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

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

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

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

Аналогично Этот модуль CGI

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

.

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

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

Ответы [ 2 ]

0 голосов
/ 06 декабря 2011

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

0 голосов
/ 25 июля 2011

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

...