node源码_http_common.js 中是如何处理请求体的?
发布于 4 个月前 作者 icantunderstand 695 次浏览 来自 问答

在阅读node/lib下的源码的时候 发现很多代码都引入了_http_common.js这个模块 这个模块通过process.binding(‘http_parser’)来完成对http请求的一些处理 image.png 当我看到上面的代码时候对node如何处理请求体有些疑问 httpt通过socket(流) 来进行数据发发送
首先这个函数的第一个参数时候是请求体的数据 ? 如果b是请求体数据 为什么不直接从stream中获取请求体的数据

2 回复

b是c++从tcp拆包出来的请求体数据,源码位置 readable其实也是有两端的,他的push方法含义楼主可以再体会一下,要先push进去,消费端才能读到。push的返回值即截图中ret对应的是highWaterMark背压概念

参考链接: https://nodejs.org/en/docs/guides/backpressuring-in-streams/ https://yjhjstz.gitbooks.io/deep-into-node/content/chapter8/chapter8-1.html https://davidc.ai/2016/05/01/通过源码解析Node-js中一个HTTP请求到响应的历程/ http://www.barretlee.com/blog/2017/06/06/dive-to-nodejs-at-stream-module/

感谢这么详细的解答

回到顶部