with-websocket
fandhe-backend の WebSocket プラグイン(websocket feature)における WebSocketConfig::with_handler によるユーザー定義メッセージハンドラ配線だけを 見せる最小サンプルです。独立して cargo run できる standalone crate として examples/with-websocket/ に切り出されています。
何を見せるサンプルか
WebSocketConfig::with_handlerによるユーザー定義WsMessageHandler(PingPongEchoHandler)の登録:- Text
"ping"→"pong"(固定の独自応答) - Text
"bye"→ サーバ起点の Close(WsOutcome::Close) - それ以外の Text/Binary → そのままエコー
- Text
GET /の通常 HTTP ルートと WebSocket(既定パス/ws)が同一Serverに 共存できることWebSocketConfigの DoS 安全側の既定値(max_message_size1 MiB /max_frame_size256 KiB / アイドルタイムアウト 60 秒)をそのまま維持
WebSocket 以外の feature(cors / compression / static / openapi 等)は焦点外の ため有効化していません(pay-for-what-you-use)。
起動方法
cd examples/with-websocket
cargo run既定で 127.0.0.1:3000 に bind します(PORT 環境変数で上書き可能)。
接続例
websocat がある環境:
# WebSocket 接続(既定パス /ws)
websocat ws://127.0.0.1:3000/ws
ping # -> pong
hello # -> hello(エコー)
bye # -> サーバから Closewebsocat が使えない環境では、cargo test の E2E テストが実 TCP 上で ハンドシェイク(101 応答)とメッセージ往復を自動検証します。
GitHub 上の実体
コード全文・詳細な README は examples/with-websocket/ を参照してください。