Commit bfd6dfc
feat(ws): implement bidirectional WebSocket proxy (#2390)
* feat(ws): implement bidirectional WebSocket proxy
- Add WebSocketProxy struct with builder pattern
- Support custom headers for upstream auth via ClientRequestBuilder
- Implement bidirectional message forwarding between client and upstream
- Add pending message queue with control vs data message separation
- Implement backpressure limit (5 MiB MAX_PENDING_QUEUE_BYTES)
- Add upstream connection timeout (5s default)
- Implement graceful shutdown with close code normalization
- Add axum dependency with ws feature for server feature
Co-Authored-By: yujonglee <[email protected]>
* feat(ws): add tower::Service, preconnect API, and friendlier builder
- Implement tower::Service for plug-and-play Axum routing
- Add preconnect() method for latency-sensitive scenarios
- Add friendlier builder API: .upstream_url(), .header(), .headers()
- Add PreconnectedProxy for handling pre-established upstream connections
- Add PreconnectError enum for preconnect error handling
- Add handle_upgrade() method for WebSocketUpgrade handling
- Add tower dependency for server feature
Co-Authored-By: yujonglee <[email protected]>
* chore: update Cargo.lock for tower dependency
Co-Authored-By: yujonglee <[email protected]>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: yujonglee <[email protected]>1 parent e16c6e7 commit bfd6dfc
3 files changed
+756
-2
lines changedSome generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
| 9 | + | |
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
23 | 26 | | |
24 | 27 | | |
0 commit comments