Open trasherdk opened 1 year ago
This seems relevant, handling different types of data uploaded.
const request = {
url: req.getUrl(),
method: req.getMethod(),
headers: new Map(),
buffer: null,
json: null,
parts: null,
error: null,
};
req.forEach((key, value) => {
request.headers.set(key, value);
});
request.buffer = Buffer.from([]);
res.onData((chunk_arraybuffer, is_last) => {
const chunk_buffer = Buffer.from(chunk_arraybuffer.slice(0));
request.buffer = Buffer.concat([request.buffer, chunk_buffer]);
if (is_last === true) {
if (request.buffer.length > 0) {
try {
if (request.headers.get('Content-Type').includes('application/json') === true) {
request.json = JSON.parse(request.buffer.toString());
}
if (request.headers.get('Content-Type').includes('multipart/form-data') === true) {
request.parts = uws.getParts(request.buffer, request.headers.get('Content-Type'));
}
} catch (e) {
request.error = e;
console.error(e);
}
}
// do your fetch here, use https://www.npmjs.com/package/node-fetch
// craft your response here
res.writeStatus('200');
res.end();
}
});
res.onAborted(() => {
// this handler is required
});
Source: https://github.com/uNetworking/uWebSockets.js/discussions/106#discussioncomment-4031954
Source: https://github.com/uNetworking/uWebSockets.js/discussions/251