Node.js response.write не отправляет данные по последовательному запросу - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть сервер Node.js (Express).Сервер прослушивает POST запрос с маршрутом /enddev.Сервер настроен на поддержание каждого соединения в течение как минимум 55 секунд.

Мой клиент отправляет POST-запросы на маршрут /enddev каждые 10 секунд.При каждом запросе используется одно и то же соединение, поскольку время ожидания перезапускается при каждом новом запросе.

Проблема заключается в том, что клиент получает данные только по первому запросу.Каждый последующий запрос регистрируется сервером, но res.write, кажется, не работает.

Вот некоторый код:

app.post("/enddev", (req, res) => {
  console.log("REQUEST TO ", req.route.path);
  console.log("Req Header ", req.headers);
  console.log("Body:", req.body);
  res.write("Thanks!");
});

Несколько строк вниз:

server.on("connection", socket => {
  console.log(
    "New connection",
    "Address: " + socket.address().address,
    "Port: " + socket.address().port
  );

  socket.setTimeout(55 * 1000);
  socket.on("timeout", () => {
    console.log("socket timeout");
    socket.end();
  });

  socket.on("close", hadError => {
    console.log(
      hadError
        ? "Socket closed due to ERROR during transmission"
        : "Socket closed"
    );
  });
});

клиент получает ответ "Спасибо!"только однажды.Вот некоторые изображения:

Клиентская консоль: (розовое: клиент, черное: сервер)

enter image description here

Это серверконсоль:

enter image description here

************* РЕДАКТИРОВАТЬ *************

Найден обходной путь, но все еще не понимаю, почему он работает только так:

var response;
app.post("/enddev", (req, res) => {
  console.log("REQUEST TO ", req.route.path);
  console.log("Req Header ", req.headers);
  console.log("Body:", req.body);
  if (typeof response === "undefined") {
    response = res;
  }
  response.write("Hi Riko");
});

Кажется, что новые ответы, переданные в качестве аргумента res, не являютсядопустимо или что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...