处理之前确定请求大小

我需要能够在实际处理之前读取请求的Content-Length头。

我现在确切的问题是,我有一个移动应用程序,推送给许多用户,每30秒发送一次数据。 如果数据推送不起作用(例如没有互联网),或者服务器没有响应200,201或202,它将数据保存在电话上的数据库中,稍后再尝试将其发送到服务器。

这个按预期工作,直到一些客户开始累积兆字节的数据(可能长时间没有互联网连接)。 现在,当设备发送数据时,服务器正确保存,但需要3-4秒才能回复。 这太长了,移动设备认为数据没有被接受并保存在数据库中。

所以我有客户每30秒发送一次兆字节的数据,这真的很糟糕。 我想收到数据后立即回复202 Accepted ,所以移动应用程序清除caching,并稍后将数据插入到服务器上的数据库中。

我知道app.use(express.json({limit: '10mb'})); 可以在处理之前读取请求的大小,因为它在开始接收请求后的几毫秒内触发一个413代码。 它在处理之前如何读取大小?

谢谢

express.json读取Content-Length标题,正如你通常会读取任何标题值: var length = req.headers['content-length'];