view benchmark/bun-http-framework-benchmark/src/node/uws.js @ 278:8d560f50ed4c

Improve infinite canvas interactions and browser chrome Render Lucide icons directly with Raylib, add searchable icon browsing, robust text editing, entity lifecycle animations, z-order-safe input, semantic themes, and animated editable browser controls. Document rendering, pinning, context, and component extension for future agents. Co-authored-by: Copilot <[email protected]> Copilot-Session: f68442b1-fa8f-46a0-9689-81710613bbd4
author MrJuneJune <me@mrjunejune.com>
date Mon, 17 Aug 2026 22:16:14 -0700
parents a8976a008a9d
children
line wrap: on
line source

/* Non-SSL is simply App() */
const uWS = require('uWebSockets.js')

uWS.App()
	.get(
		'/',
		new uWS.DeclarativeResponse()
			.writeHeader('content-type', 'text/plain')
			.end('Hi')
	)
	.get(
		'/id/:id',
		new uWS.DeclarativeResponse()
			.writeHeader('content-type', 'text/plain')
			.writeHeader('x-powered-by', 'benchmark')
			.writeParameterValue('id')
			.write(' ')
			.writeQueryValue('name')
			.end()
	)
	.post('/json', (res, req) => {
		readJson(
			res,
			(obj) => {
				res.writeHeader('content-type', 'application/json').end(
					JSON.stringify(obj)
				)
			},
			() => {
				res.end('Ok')
			}
		)
	})
	.listen(3000, (listenSocket) => {
		if (listenSocket) {
			console.log('Listening to port 3000')
		}
	})

function readJson(res, cb, err) {
	let buffer

	res.onData((ab, isLast) => {
		let chunk = Buffer.from(ab)
		if (isLast) {
			if (buffer) {
				cb(JSON.parse(Buffer.concat([buffer, chunk])))
			} else {
				cb(JSON.parse(chunk))
			}
		} else {
			if (buffer) {
				buffer = Buffer.concat([buffer, chunk])
			} else {
				buffer = Buffer.concat([chunk])
			}
		}
	})

	res.onAborted(err)
}