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