nodejs без остановки

Существует ли способ, которым я могу сделать перезагрузку nodejs каждый раз, это служит странице?

Я хочу сделать это во время dev цикла, таким образом, я могу избежать необходимости завершать работу и запускаться на каждом изменении кода?

6
задан Toby Allen 26 February 2012 в 19:59
поделиться

2 ответа

Изменить: попробуйте nodules и их функцию require.reloadable () .

Мой предыдущий ответ был о том, почему бы не перезагрузить процесс из Node.js, и здесь он не применяется. Но я думаю, что это все еще важно, поэтому оставляю это здесь.

Node.js - это упорядоченный ввод-вывод и создан специально, чтобы избежать множественных потоков или процессов. Знаменитая задача C10k спрашивает, как обслуживать 10 тысяч клиентов одновременно. Вот где потоки работают не очень хорошо. Node.js может обслуживать 10 тысяч клиентов всего одним потоком. Если бы вы каждый раз перезапускали Node.js, вы бы серьезно повредили Node.js.

Что означает заданный IO ?

Возьмем ваш пример: обслуживание страницы. Каждый раз, когда Node.js собирается обслуживать страницу, цикл обработки событий вызывает обратный вызов. Цикл событий присущ каждому приложению Node.js и запускается после завершения инициализации. Node.js на стороне сервера работает точно так же, как клиентский Javascript в браузере. Каждый раз, когда происходит событие (щелчок мышью, тайм-аут и т. Д.), Вызывается обратный вызов - обработчик событий .

А на стороне сервера? Давайте посмотрим на простой HTTP-сервер (пример исходного кода взят из документации Node.js )

var http = require('http');

http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World\n');
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

Сначала загружается http-модуль, затем создается HTTP-сервер и приказывает ему вызвать внутреннюю функцию, запускающую с функцией (запрос, ответ) каждый раз, когда приходит HTTP-запрос, заставляет сервер прослушивать порт 8124.Это завершается почти сразу, так что после этого будет выполнен console.log .

Теперь Node.js цикл обработки событий берет верх. Приложение не завершается, а ожидает запросов. И вуаля на каждый запрос отвечает Hello World \ n .

Таким образом, не перезапускайте Node.js, но позвольте его циклу событий решить, когда ваш код должен быть запущен.

10
ответ дан 8 December 2019 в 18:29
поделиться

Нет. Node.js всегда должен работать. Я думаю, вы могли неправильно понять концепцию nodejs. Чтобы nodejs обслуживал страницы, он должен быть собственным сервером. Как только вы запустите экземпляр сервера и начнете прослушивать порты, он будет работать, пока вы его не закроете.

Возможно ли, что вы вызвали функцию для закрытия сервера вместо того, чтобы просто закрыть данный поток?

-3
ответ дан 8 December 2019 в 18:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: