Сервер Node.js сбрасывается из-за ошибки пользователя

Я разрабатываю приложение Node.js, в котором пользователь регистрируется на трех уровнях. проблема в том, что когда пользователь сталкивается с ошибкой на любом из уровней, весь сервер сбрасывается, а остальные сеансы пользователя закрываются. причина, по которой сервер перезагружается, заключается в том, что я использую forever start app для запуска своего приложения, в противном случае оно полностью отключается.

  1. как остановить сервер, чтобы он полностью остановился, когда только один пользователь сталкивается с какой-либо ошибкой?

  2. как запустить каждого пользователя в отдельном потоке (под потоком я подразумеваю изолированную среду)?


person Saeed Oraji    schedule 01.06.2015    source источник
comment
Добро пожаловать в Stack Overflow! Возможно, вы захотите узнать, как задать вопрос. Правильное форматирование вашего вопроса будет иметь большое значение для получения ответа, который вы ищете.   -  person Gary Storey    schedule 01.06.2015
comment
Настоящая проблема в том, что вы не обрабатываете ошибки изящно. Я бы рекомендовал начать с трех лучших статей этого поиска: google.com/   -  person Mike Perrenoud    schedule 01.06.2015
comment
Вы определенно неправильно обрабатываете ошибку, и ваш сервер дает сбой только для того, чтобы перезапуститься навсегда. Нам нужно увидеть ваш код. Вам не нужно использовать многопоточность, чтобы решить эту проблему.   -  person Chev    schedule 01.06.2015
comment
@MichaelPerrenoud, независимо от обработки каких-либо ошибок, сервер не должен останавливаться. Только сеанс пользователя, который сталкивается с ошибкой. Например, в asp.net при попытке доступа к объекту null он выдает object reference not set to an instance of an object, но iis не останавливается   -  person Saeed Oraji    schedule 01.06.2015
comment
Ветка @AlexFord была примером. Я имею в виду изолированную среду.   -  person Saeed Oraji    schedule 01.06.2015
comment
@SaeedOraji, к сожалению, Node работает не так. Необработанная ошибка может привести к перезапуску сервера.   -  person Mike Perrenoud    schedule 01.06.2015
comment
@SaeedOraji понимание того, как на самом деле работает Node, будет иметь первостепенное значение для того, как вы подходите к проблемам. Я бы сказал, что вы захотите потратить некоторое время на чтение статей или видео, в которых это действительно подробно описано для вас.   -  person Mike Perrenoud    schedule 01.06.2015
comment
@SaeedOraji вот довольно хорошая статья: toptal .com/nodejs/why-the-hell-would-i-use-node-js   -  person Mike Perrenoud    schedule 01.06.2015
comment
@MichaelPerrenoud спасибо за статью и ваш комментарий   -  person Saeed Oraji    schedule 01.06.2015


Ответы (1)


Учитывая ответ @Michael

к сожалению, это не то, как работает Node. Необработанная ошибка может привести к перезапуску сервера.

Единственный способ - правильно обрабатывать исключения. Таким образом, вы можете проверить эти ответы на комментарии о том, как обрабатывать uncaughtException

var handleRequest = function(req, res) {
    res.writeHead(200);
    res1.end('Hello, World!\n');
};
var server = require('http').createServer(handleRequest);
process.on('uncaughtException', function(ex) {
    // do something with exception
});
server.listen(8080);
console.log('Server started on port 8080');
person Alex Jolig    schedule 01.06.2015