防止在错误请求时关闭连接

时间:2018-11-20 16:31:56

标签: node.js sockets express

我有一个快递服务器。 我设置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 :(得分:0)

是的,我在评论中提出的建议有效。

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");
});

希望这会帮助有类似问题的人。