Skip to main content
Start a simple WebSocket server using Bun.serve. Inside fetch, we attempt to upgrade incoming ws: or wss: requests to WebSocket connections.
https://mintcdn.com/bun-1dd33a4e/Hq64iapoQXHbYMEN/icons/typescript.svg?fit=max&auto=format&n=Hq64iapoQXHbYMEN&q=85&s=c6cceedec8f82d2cc803d7c6ec82b240server.ts
const server = Bun.serve<{authToken: string}>({
	fetch(req, server) {
		const success = server.upgrade(req);
		if (success) {
			// Bun automatically returns a 101 Switching Protocols
			// if the upgrade succeeds
			return undefined;
		}

		// handle HTTP request normally
		return new Response('Hello world!');
	},
	websocket: {
		// this is called when a message is received
		async message(ws, message) {
			console.log(`Received ${message}`);
			// send back a message
			ws.send(`You said: ${message}`);
		},
	},
});

console.log(`Listening on ${server.hostname}:${server.port}`);