# Example 03: WebSocket Tunnel Two clients exchange encrypted messages over a WebSocket connection using `ShadeWebSocket`. The wire format is binary protobuf-like encoding for compactness. ## Run ```bash bun run main.ts ``` ## What it shows - Wrapping a raw WebSocket with auto-encryption via `ShadeWebSocket` - Bidirectional encrypted messaging - The client never has to manually call `encrypt()`/`decrypt()` — it's transparent