2014-01-25 2 views
0

Я пытаюсь создать промежуточное программное обеспечение с Connect, которое отображает Hello World на веб-страницу, а также регистрирует его на консоли. Мне удалось заставить его работать в моем browswer, но я заметил, что консоль записывает его дважды - это не делает этого при использовании завитка. У меня нет значков, и все расширения в Chrome отключены.Нежелательные множественные запросы при использовании Connect/NodeJS

Вот мой код ... довольно просто:

var connect = require('connect'); 

var app = connect(); 
app.use(function (req, res, next) { 
    console.log('hello world'); 
    res.setHeader('Content-Type', 'text/plain'); 
    res.end('Hello World'); 
}); 
app.listen(5000); 

Опять же, после открытия http://localhost:5000 в Chrome, это выход в терминале:

hello world

hello world

Почему это называется дважды? Это нормально?

ответ

0

Да. Когда кто-то подключается к серверу, оно отправляется на сервер.

+0

Это не объясняет, почему его зовут дважды. Я понимаю, что когда кто-то подключается к серверу, отправляется запрос. –

1

Вы получаете два запроса и, скорее всего, хромированные чеки для значка. Добавьте console.log (req); и проверить, какие запросы сделаны на сервере.

app.use(function (req, res, next) { 
    console.log(req); 
    console.log('hello world'); 
    res.setHeader('Content-Type', 'text/plain'); 
    res.end('Hello World'); 
}); 
+0

console.log (req.url) менее подробный и должен быть проще увидеть, что именно браузер запрашивает по второму запросу. –

-1

Из документов:

response.end ([данных], [кодировка])

Этот метод сигналов на сервере, на котором все заголовки и тело ответа были отправлены; этот сервер должен считать это сообщение завершенным. Метод, response.end(), ДОЛЖЕН быть вызван для каждого ответа.

Если данные указаны, это эквивалентно вызову response.write (данные, кодирование), за которым следует response.end().

Последняя строка кажется ключом к этому. Вы видите свой первый журнал консоли, а что эквивалентно response.write. Извиняюсь из-за отсутствия форматирования, я нахожусь на своем iPad.

0

Это не нормально. Если вы просто обновите страницу браузера (Ctrl + R), вы должны увидеть «мир привет» только один раз. Open Developer Tools в Chrome (кнопка меню ->инструменты ->Developer Tools) и переключиться на Network вкладку. Затем снова обновите страницу браузера и проверьте запросы браузера.

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