UNPKG

@ghini/kit

Version:

js practical tools to assist efficient development

63 lines (62 loc) 1.77 kB
export {default_routes,hd_default} // 预设的一些路由处理 function default_routes() { return [ ["/", "*", "*", hd_hello.bind("Ghini"), undefined, {}], [/^\/gold/, "*", "*", hd_hello.bind("RegExp"), undefined, {}], ["/gold", "*", "*", hd_default, undefined, {}], ["/data", "POST", "*", hd_data, undefined, {}], ["/error", "*", "*", hd_error, undefined, {}], ["/stream", "*", "*", hd_stream, undefined, {}], ["/countdata", "*", "*", (g) => g.end(g.body), hd_countdata, {}], ]; } function hd_default(gold) { gold.json(gold); } function hd_hello(gold) { let data = { hello: "http" + gold.httpVersion }; if (this) data.hi = this; gold.json(data); } function hd_stream(gold) { gold.respond({ "content-type": "text/event-stream", "cache-control": "no-cache", }); let count = 3; gold.write(`data: ${count}\n\n`); const interval = setInterval(() => { count--; if (count > 0) { gold.write(`data: ${count}\n\n`); } else { gold.write(`data: ${count}\n\n`); gold.write("data: Countdown complete!\n\n"); clearInterval(interval); gold.end(); } }, 1000); } function hd_data(gold) { gold.respond({ "Content-Type": "application/json; charset=utf-8" }); gold.write(JSON.stringify(gold.param, "", 2) + "\n"); gold.end(gold.body); } async function hd_error(gold) { // 不存在的方法,测试报错 gold.enderror(gold.body); } function hd_routes(gold) { console.log(this); gold.json(this); } function hd_countdata(gold, chunk, chunks) { gold.respond({ ":status": 200, "content-type": "text/plain;charset=UTF-8", }); console.log(chunk, chunks.length); chunks.push(Buffer.from(chunks.length + ",")); gold.write(`data: ${chunks.length}\n`); }