3

我一直在研究 Mochiweb,但是当我通过套接字接收请求时,我找不到读取正文的方法。

我不仅限于 Mochiweb,任何其他 HTTP 库都对我有好处。

我也试过gen_tcp:listen(Port, [{packet, http}]),这样我可以在接收 HTTP 请求时读取正文/标题,但我必须手动处理响应并保持套接字打开以接收更多请求,所以我不喜欢使用这个解决方案。

我的意图是接收大型机构的请求,而不是等待接收全身以便开始阅读/处理它们。

4

1 回答 1

3

使用 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),
...
于 2010-11-30T13:30:54.733 回答