The type of options that can be passed to serve
Symbol
Serve
Referenced types
interface ServeOptions
- id?: null | string
Uniquely identify a server instance with an ID
When bun is started with the
--hot
flagThis 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
flagThis 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.
Default is
10
seconds. - 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.
- unix?: undefined
If set, the HTTP server will listen on a unix socket instead of a port. (Cannot be used with hostname+port)
interface UnixServeOptions
- id?: null | string
Uniquely identify a server instance with an ID
When bun is started with the
--hot
flagThis 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
flagThis string will currently do nothing. But in the future it could be useful for logs or metrics.
- unix: string
If set, the HTTP server will listen on a unix socket instead of a port. (Cannot be used with hostname+port)
interface WebSocketServeOptions<WebSocketDataType = undefined>
- id?: null | string
Uniquely identify a server instance with an ID
When bun is started with the
--hot
flagThis 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
flagThis string will currently do nothing. But in the future it could be useful for logs or metrics.
- websocket: WebSocketHandler<WebSocketDataType>
Enable websockets with Bun.serve
For simpler type safety, see Bun.websocket
Bun.serve({ websocket: { open: (ws) => { console.log("Client connected"); }, message: (ws, message) => { console.log("Client sent message", message); }, close: (ws) => { console.log("Client disconnected"); }, }, fetch(req, server) { const url = new URL(req.url); if (url.pathname === "/chat") { const upgraded = server.upgrade(req); if (!upgraded) { return new Response("Upgrade failed", { status: 400 }); } } return new Response("Hello World"); }, });
Upgrade a Request to a ServerWebSocket via Server.upgrade
Pass
data
in @{link Server.upgrade} to attach data to the ServerWebSocket.data property
interface UnixWebSocketServeOptions<WebSocketDataType = undefined>
- id?: null | string
Uniquely identify a server instance with an ID
When bun is started with the
--hot
flagThis 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
flagThis string will currently do nothing. But in the future it could be useful for logs or metrics.
- unix: string
If set, the HTTP server will listen on a unix socket instead of a port. (Cannot be used with hostname+port)
- websocket: WebSocketHandler<WebSocketDataType>
Enable websockets with Bun.serve
For simpler type safety, see Bun.websocket
import { serve } from "bun"; serve({ websocket: { open: (ws) => { console.log("Client connected"); }, message: (ws, message) => { console.log("Client sent message", message); }, close: (ws) => { console.log("Client disconnected"); }, }, fetch(req, server) { const url = new URL(req.url); if (url.pathname === "/chat") { const upgraded = server.upgrade(req); if (!upgraded) { return new Response("Upgrade failed", { status: 400 }); } } return new Response("Hello World"); }, });
Upgrade a Request to a ServerWebSocket via Server.upgrade
Pass
data
in @{link Server.upgrade} to attach data to the ServerWebSocket.data property