diff --git a/examples/JsonPost.mjs b/examples/JsonPost.mjs index 088d5ff89..cf8b28552 100644 --- a/examples/JsonPost.mjs +++ b/examples/JsonPost.mjs @@ -33,38 +33,17 @@ const app = uWS./*SSL*/App({ /* Helper function for reading a posted JSON body */ function readJson(res, cb, err) { - let buffer; - /* Register data cb */ - res.onData((ab, isLast) => { - let chunk = Buffer.from(ab); - if (isLast) { - let json; - if (buffer) { - try { - json = JSON.parse(Buffer.concat([buffer, chunk])); - } catch (e) { - /* res.close calls onAborted */ - res.close(); - return; - } - cb(json); - } else { - try { - json = JSON.parse(chunk); - } catch (e) { - /* res.close calls onAborted */ - res.close(); - return; - } - cb(json); - } - } else { - if (buffer) { - buffer = Buffer.concat([buffer, chunk]); - } else { - buffer = Buffer.concat([chunk]); - } + /* collectBody gives the whole body at once, or null if it is bigger than 1 MB */ + res.collectBody(1024 * 1024, (body) => { + let json; + try { + json = JSON.parse(Buffer.from(body)); + } catch (e) { + /* Too big, invalid or empty: res.close calls onAborted */ + res.close(); + return; } + cb(json); }); /* Register error cb */