Frage

Ich habe in Mochiweb suchen, aber ich kann nicht einen Weg finden, um den Körper zu lesen, während ich die Anfrage durch die Buchse bin zu empfangen.

Ich bin auf Mochiweb nicht darauf beschränkt, eine andere HTTP-Bibliothek wäre gut für mich sein.

I gen_tcp:listen(Port, [{packet, http}]) auch versucht, auf diese Weise kann ich lesen, den Körper / Header, während ich die HTTP-Anforderung bin empfangen, aber ich muss manuell die Antworten behandeln und halten die Buchse für mehr Anfragen offen, so ziehe ich es nicht, diese Lösung zu verwenden, .

Meine Absicht ist es Wunsch mit großen Körpern zu erhalten und nicht zu warten, um den vollständigen Körper zu erhalten, um sie zu lesen beginnen / Verarbeitung.

War es hilfreich?

Lösung

Mit mochiweb können Sie Stücke des Antrags Körper umklappen mit Req:stream_body/3 . Es erwartet eine Chunk-Handler-Funktion als das zweite Argument. Dieser Handler wird aufgerufen, mit {ChunkSize, BinaryData} und Ihr Zustand für jeden Brocken, wie es aus der Steckdose empfangen wird.

Beispiel (a [umgekehrt] Liste der Chunks abrufen):

MaxChunkSize = 100,
InitialState = [],
ChunkHandler = fun ({_Size, Bin}, State) -> [Bin | State] end, 
List = Req:stream_body(MaxChunkSize, ChunkHandler, InitialState),
...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top