Почему сообщения от клиента к серверу тормозят, а потом приходят сразу пачкой?

Добрый день.
Написал для своих нужд небольшой сервер на node.js (код ниже). Его задача предельно проста: запустили, сидит и слушает, когда придет запрос. Как запрос пришел - просто переправить его дальше (в моем случае в Slack). Запустил, вроде до какого-то времени все работает, но заметил, что спустя какое-то время сообщения перестали доходить в слак. Я зашел в командную строку, остановил сервер, и в этот момент куча сообщений сразу дошло в слак (одновременно). Они почему-то накопились, и отправились только когда сервер остановился. С чем такое может быть связано? Что я не так сделал или чего наоборот не сделал?

const http = require("http");
const fs = require("fs");
const request = require('request');

const html = fs.readFileSync("./index.html");


const server = http.createServer((req, res) => {
  const { method, url } = req;
  if (url === '/' && method === "GET") {
    console.log(`URL of GET request: ${url}`);
    res.end(html);
  }
  if (url === '/' && method === "POST") {
    console.log(`URL of POST request: ${url}`);
    let data = "";
    req
      .on("data", chunk => {
        data += chunk.toString();
      })
      .on("end", () => {
        console.log(`Received data: ${data}`);
        const slackBody = {
          "text": data
        };
        const message = JSON.stringify(slackBody);
        request.post(
          {
            headers: {'Content-type': 'application/json'},
            url: 'https://someurl',
            body: message
          }, (err,res) => {
            if (err) console.log(err);
            console.log(res.statusCode);
            console.log(res.body);
          }
        )
      });
  }
});
server.listen(3000, () => console.log("Server is running"));
  • Вопрос задан
  • 1368 просмотров
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov
Web developer
Неплохо бы завершать POST-запросы. Надо добавить res.end(); в .on("end")
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы