Запретить закрытие соединения по неверному запросу - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть экспресс-сервер.Я установил socket.setKeepAlive(true, 60000);, чтобы поддерживать постоянное соединение не менее 1 минуты.

Вот код:

var express = require("express");
var app = express();
var server = app.listen(8080);

app.get("/", (req, res) => {
  res.write("Hello Riko");
});

// server.listen(3000);

server.on("connection", function(socket) {
  console.log("A new connection was made by a client.");
  socket.setKeepAlive(true, 60000);
  socket.on("data", data => {
    console.log(data);
  });
  // 30 second timeout. Change this as you see fit.
});

Когда клиент отправляет неверный запрос, он получает 400 Bad Request Как предотвратить закрытие соединения при неверном запросе?

1 Ответ

0 голосов
/ 22 ноября 2018

Да, предложение, которое я сделал в комментариях, работает.

server.on('clientError',cb) предотвращает поведение стека по умолчанию.

Я столкнулся с одной проблемой, хотя.Он регистрирует прослушиватель событий для события error каждый раз, когда запускается clientErrorПоэтому я немного изменил код и получил решение, которое работает для меня:

var express = require("express");
var app = express();
var server = app.listen(8080);

app.get("/", (req, res) => {
  res.send("Hello Riko");
});

onSocketError = err => {
  console.log("Socket Error: " + err);
};

server.on("connection", function(socket) {
  socket.on("data", data => {
    console.log(data.toString());
  });
  console.log("A new connection was made by a client.");
});
server.on("clientError", (err, socket) => {
  socket.removeAllListeners("error");
});

Надеюсь, это поможет кому-то с подобной проблемой.

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