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