سؤال

لقد كنت أبحث في 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