# Examples
仓库的 examples 覆盖了 TCP、UDP、typed chain、JSON、TLS、lifecycle、HTTP 和 WebSocket。
## TCP Echo
- `examples/tcp_echo_server.rs`
- `examples/tcp_echo_client.rs`
运行:
```bash
cargo run --example tcp_echo_server
cargo run --example tcp_echo_client
```
server 使用 `LineCodec` 和 `#[handler(Echo)]`,client 使用 `write_and_flush` 发送两行。
## Typed TCP Chain
- `examples/tcp_typed_chain.rs`
- `examples/tcp_typed_chain_client.rs`
运行:
```bash
cargo run --example tcp_typed_chain
cargo run --example tcp_typed_chain_client
```
server pipeline:
```rust
pipeline()
.codec(LineCodec::new())
.inbound(Trim)
.inbound(ParseRequest)
.handler(Router)
.outbound(RenderResponse)
```
这个例子展示 `String -> Request -> Response -> String` 的完整类型链。
## JSON Over Line
- `examples/tcp_json_line_echo.rs`
运行 server:
```bash
cargo run --example tcp_json_line_echo --features json
```
运行 client:
```bash
cargo run --example tcp_json_line_echo --features json -- client
```
这个例子把 framing 和 JSON 分开:`LineCodec` 负责行边界,`JsonDecode<T>` / `JsonEncode<T>` 负责 typed JSON。
## TLS Echo
- `examples/tcp_tls_echo.rs`
运行:
```bash
cargo run --example tcp_tls_echo --features tls
```
这个例子生成 localhost 测试证书,通过 `.tls(...)` 挂到 TCP transport 上,同时继续把 `LineCodec` 作为应用明文 codec。
同一组 TLS context API 也支持 required 或 optional mTLS、ALPN 发布、SNI-specific certificate identities,以及通过 TCP handler/stage context 读取 `TlsInfo` metadata。
## Lifecycle
- `examples/tcp_lifecycle.rs`
运行:
```bash
cargo run --example tcp_lifecycle
```
这个例子实现 `Life`,打印 TCP server started/stopped 和 connection opened/closed。
## UDP Echo
- `examples/udp_echo_server.rs`
- `examples/udp_echo_client.rs`
运行:
```bash
cargo run --example udp_echo_server
cargo run --example udp_echo_client
```
使用 `Utf8DatagramCodec` 和 `datagram_pipeline()`。
## Typed UDP Chain
- `examples/udp_typed_chain.rs`
- `examples/udp_typed_chain_client.rs`
运行:
```bash
cargo run --example udp_typed_chain
cargo run --example udp_typed_chain_client
```
展示 UDP datagram pipeline 的 typed inbound/outbound 转换。
## HTTP And WebSocket
- `examples/http_server.rs`
- `examples/websocket_server.rs`
- `examples/http_websocket_server.rs`
运行:
```bash
cargo run --example http_server
cargo run --example websocket_server --features websocket
cargo run --example http_websocket_server --features websocket
```
`http_server` 使用 `HttpCodec`。`websocket_server` 使用 `WebSocketCodec`。`http_websocket_server` 使用 `HttpWsCodec` 和 `HttpWsRouter` 在同一个 port 上处理 HTTP request 与 WebSocket upgrade。