Для того, чтобы время простоя вызвано длительным приложением-перезагружается менее болезненным, я думал, что-то вроде:nodejs работает два приложения на одном порту
- Main App # 1 на порт 80.
- Fail-над App # 2 в порту 80, но ответьте на запросы только в том случае, если приложение № 1 не работает.
- Пусть приложение №2 служит для сообщения «поддержания» для активных пользователей.
Выполнение двух процессов на одном и том же порту заканчивается на Error: EADDRINUSE
- так что простой способ не работает. Я наткнулся на server.on('error')
событие и решили позволить App # 2 ждать, пока приложение # 1 не может остановить, поэтому порт становится доступным:
function tryPitchIn(){
var server = http.createServer(app);
server.on('listening', function(){
console.log('Application #1 crashed/ended');
console.log('Pitching in...');
});
server.on('error', function(){
console.log('noting to do');
setTimeout(tryPitchIn, 250);
});
server.listen(80);
}
tryPitchIn();
Хотя выше работает замечательно, я должен бороться с окончанием App # 2 при инициализации приложения №1, что нелегко сделать в разных операционных системах.
Можно ли задать процесс узла (введенный npm start
) статическим идентификатором для его завершения из другого процесса - желательно перекрестный os? Или другие идеи для сценария?
Я не хочу его перезапускать, я просто хочу обслуживать активных пользователей на странице «мы поддерживаем нашу службу»! (Мне нужно перезапустить сервер на обновлениях приложений, которые могут занять серверные секунды для создания публичных библиотек и т. Д.) –
Обратное проксирование вашего приложения за чем-то вроде Nginx является действительной (и общей) стратегией. –