我一直在研究Mochiweb,但是当我通过套接字收到请求时,我找不到一种方法来阅读身体。
我不仅限于Mochiweb,任何其他HTTP库对我都有好处。
我也试过gen_tcp:listen(Port, [{packet, http}])
,这样我可以在收到HTTP请求时读取正文/标题,但我必须手动处理响应并保持套接字打开以获取更多请求,所以我不喜欢使用这个解决方案。
我的目的是接收大型机构的请求,而不是等待接收全身以便开始阅读/处理它们。
答案 0 :(得分:3)
使用mochiweb,您可以使用Req:stream_body/3
折叠请求正文的块。
它期望块处理程序函数作为第二个参数。使用此处理程序
{ChunkSize, BinaryData}
和每个块的状态,因为它是从套接字接收的。
示例(检索[反向]块列表):
MaxChunkSize = 100,
InitialState = [],
ChunkHandler = fun ({_Size, Bin}, State) -> [Bin | State] end,
List = Req:stream_body(MaxChunkSize, ChunkHandler, InitialState),
...