收到HTTP请求的正文,在Erlang中阅读
题
我一直在研究Mochiweb,但是当我通过插座收到请求时,我找不到一种阅读身体的方法。
我不仅限于Mochiweb,任何其他HTTP库都对我有好处。
我也尝试了 gen_tcp:listen(Port, [{packet, http}])
, ,这样,我可以在收到HTTP请求时阅读车身/标头,但是我必须手动处理响应并保持插座打开以获取更多请求,因此我更喜欢不使用此解决方案。
我的目的是接收大型身体的请求,而不是等待接受全身,以便开始阅读/处理它们。
解决方案
使用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),
...
不隶属于 StackOverflow