2014-01-15 3 views
1

У меня есть приложение Express, и я использую домены на каждый полученный запрос. Я добавил промежуточное программное обеспечение, чтобы гарантировать, что любые дополнительные посредники выполняются «внутри» домена.Должны ли быть удалены узлы node.js? Когда это должно быть сделано?

app.use(function(req, res, next) { 
    var d = domain.create(); 

    d.req = req; 

    d.add(req); 
    d.add(res); 

    d.run(next); 
}); 

Кроме того, некоторый код, который выполняется во время обработки запроса использует process.domain.req, чтобы получить ссылку на первоначальный запрос, это заголовки, печенье и т.д ... Я делаю это дело»не могу пройти req прямо на этот код. Этот странный код является своего рода кодом межсетевой среды (для браузера и для узла), который не знает, где он выполняется. Под капотом некоторые базовые слои реализованы по-разному для узла и для браузера, особенно для сетевого кода. Для браузера это XMLHttpRequest, а для NodeJS это настраиваемая оболочка на основе request lib.

Я беспокоюсь о утечке памяти. Это ссылки на req, хранящиеся в домене. Могут ли они сохранить это и не собирать мусор?

Кроме того, мне нужно регулярно размещать домены, или мне нужно их утилизировать в некоторых случаях с ошибками/ошибками?

ответ

3

Обычно вы отправляете свой домен на событие ошибки или завершения, вот пример https://gist.github.com/regality/3061748.

Однако, по моему мнению, метод domain.dispose() устарел. См. Эту проблему git для получения дополнительной информации. - https://github.com/joyent/node/issues/5018

Далее в соответствии с doc рекомендуется убить процесс домена при возникновении ошибки. Эта ссылка имеет хорошее объяснение и пример.

 Смежные вопросы

  • Нет связанных вопросов^_^