> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/zhcndoc/bun/llms.txt
> Use this file to discover all available pages before exploring further.

# Build a simple WebSocket server

> Create WebSocket servers with Bun

Bun provides built-in WebSocket support via `Bun.serve()`.

## Basic WebSocket Server

```typescript server.ts theme={null}
Bun.serve({
  port: 3000,
  fetch(req, server) {
    const success = server.upgrade(req);
    if (success) return undefined;
    return new Response("Upgrade failed", { status: 500 });
  },
  websocket: {
    open(ws) {
      console.log("Client connected");
    },
    message(ws, message) {
      console.log("Received:", message);
      ws.send(`Echo: ${message}`);
    },
    close(ws) {
      console.log("Client disconnected");
    },
  },
});

console.log("WebSocket server running at ws://localhost:3000");
```

## Client

```typescript client.ts theme={null}
const ws = new WebSocket("ws://localhost:3000");

ws.onopen = () => {
  console.log("Connected");
  ws.send("Hello Server");
};

ws.onmessage = (event) => {
  console.log("Received:", event.data);
};
```

See [WebSocket API](/api/websockets) for complete documentation.
