我一直在研究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),
...
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top