The type of options that can be passed to serve, with support for routes
and a safer requirement for fetch
type
Serve.Options
export default {
fetch: req => Response.json(req.url),
websocket: {
message(ws) {
ws.data.name; // string
},
},
} satisfies Bun.Serve.Options<{ name: string }>;
Referenced types
interface HostnamePortServeOptions<WebSocketData>
- hostname?: string & {} | '0.0.0.0' | '127.0.0.1' | 'localhost'
What hostname should the server listen on?
"127.0.0.1" // Only listen locally
- id?: null | string
Uniquely identify a server instance with an ID
When bun is started with the
--hot
flag:This string will be used to hot reload the server without interrupting pending requests or websockets. If not provided, a value will be generated. To disable hot reloading, set this value to
null
.When bun is not started with the
--hot
flag:This string will currently do nothing. But in the future it could be useful for logs or metrics.
- idleTimeout?: number
Sets the the number of seconds to wait before timing out a connection due to inactivity.
- reusePort?: boolean
Whether the
SO_REUSEPORT
flag should be set.This allows multiple processes to bind to the same port, which is useful for load balancing.
- tls?: TLSOptions | TLSOptions[]
Set options for using TLS with this server
const server = Bun.serve({ fetch: request => new Response("Welcome to Bun!"), tls: { cert: Bun.file("cert.pem"), key: Bun.file("key.pem"), ca: [Bun.file("ca1.pem"), Bun.file("ca2.pem")], }, });
interface UnixServeOptions<WebSocketData>
- id?: null | string
Uniquely identify a server instance with an ID
When bun is started with the
--hot
flag:This string will be used to hot reload the server without interrupting pending requests or websockets. If not provided, a value will be generated. To disable hot reloading, set this value to
null
.When bun is not started with the
--hot
flag:This string will currently do nothing. But in the future it could be useful for logs or metrics.
- tls?: TLSOptions | TLSOptions[]
Set options for using TLS with this server
const server = Bun.serve({ fetch: request => new Response("Welcome to Bun!"), tls: { cert: Bun.file("cert.pem"), key: Bun.file("key.pem"), ca: [Bun.file("ca1.pem"), Bun.file("ca2.pem")], }, });
- unix?: string
If set, the HTTP server will listen on a unix socket instead of a port. (Cannot be used with hostname+port)