【问题标题】:Prevent closing connection on bad request防止在错误请求时关闭连接
【发布时间】:2018-11-22 19:13:58
【问题描述】:

我有一个快递服务器。 我设置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 如何防止无效请求关闭连接?

【问题讨论】:

标签: node.js sockets express


【解决方案1】:

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

server.on('clientError',cb) 阻止堆栈的默认行为。

我遇到了一个问题。每次触发clientError 时,它都会为error 事件注册事件侦听器。因此,我稍微更改了代码并最终得到了一个适合我的解决方案:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    相关资源
    最近更新 更多