Почему событие запроса запускается дважды - PullRequest
0 голосов
/ 29 октября 2018

У меня есть сервер, который выглядит следующим образом:

const http2 = require('http2');
const {
    HTTP2_HEADER_METHOD,
    HTTP2_HEADER_PATH,
    HTTP2_HEADER_STATUS,
    HTTP2_HEADER_CONTENT_TYPE
  } = http2.constants;

const fs = require('fs');

const server = http2.createSecureServer({
  key: fs.readFileSync('./ssl/localhost-privkey.pem'),
  cert: fs.readFileSync('./ssl/localhost-cert.pem')
});


server.on('error', (err) => {
    console.error(err);
});

server.on('stream', (stream, headers,flags) => {
  stream.respond({
    'content-type': 'text/html',
    [HTTP2_HEADER_STATUS]: 200,
    [HTTP2_HEADER_CONTENT_TYPE]: 'text/plain'
  });
  stream.end('<h1>Hello World 2</h1>');
});



server.on('request', (msg) => {
  /* THIS IS BEING FIRED TWICE*/
   console.log('request:' + JSON.stringify(msg) );
});


server.on('session', (msg) => {
 /* THIS IS ALSO BEING FIRED TWICE*/
    console.log('session:' + JSON.stringify(msg) );
});

 server.listen(8443);

Из моего браузера я набираю URL https://myserver:8443.На моем сервере я вижу, что сеанс событий утешенного журнала дважды.Почему это происходит, потому что я делаю только один запрос?Также каждый раз, когда я обновляю страницу, событие запроса запускается дважды, а не только один раз.Я использую nodejs 11.0.0

1 Ответ

0 голосов
/ 29 октября 2018

Вы должны зарегистрировать запрашиваемый URL-адрес с помощью console.log(msg.url). Скорее всего, вы обнаружите, что один из запросов относится к favicon.ico, так как это то, что браузер будет запрашивать, когда у него еще нет кэшированного значка для определенного домена.

Все запросы веб-сервера должны смотреть на фактический запрашиваемый ресурс и отвечать соответствующим образом на основе точного запрашиваемого ресурса.

...