turbomcp_websocket/lib.rs
1//! # TurboMCP WebSocket Transport
2//!
3//! WebSocket bidirectional transport implementation for the TurboMCP SDK.
4//! This crate provides MCP 2025-11-25 bidirectional
5//! communication, server-initiated requests, and elicitation handling.
6//!
7//! ## Features
8//!
9//! - **Bidirectional Communication**: Full request-response patterns with correlation
10//! - **Elicitation Support**: Server-initiated requests with timeout handling
11//! - **Automatic Reconnection**: Configurable exponential backoff retry logic
12//! - **Keep-Alive**: Periodic ping/pong to maintain connections
13//! - **Compression**: Optional message compression support
14//! - **TLS Support**: Secure WebSocket connections (WSS)
15//! - **Metrics Collection**: Comprehensive transport metrics and monitoring
16//! - **Background Tasks**: Efficient management of concurrent operations
17//!
18//! ## Quick Start
19//!
20//! ```rust,ignore
21//! use turbomcp_websocket::{WebSocketBidirectionalTransport, WebSocketBidirectionalConfig};
22//! use turbomcp_transport_traits::Transport;
23//!
24//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
25//! // Create client configuration
26//! let config = WebSocketBidirectionalConfig::client("ws://localhost:8080".to_string())
27//! .with_max_concurrent_elicitations(5)
28//! .with_compression(true);
29//!
30//! // Create and connect transport
31//! let transport = WebSocketBidirectionalTransport::new(config).await?;
32//! transport.connect().await?;
33//!
34//! // Use the transport...
35//! # Ok(())
36//! # }
37//! ```
38//!
39//! ## Architecture
40//!
41//! The WebSocket transport is organized into focused components:
42//!
43//! ```text
44//! turbomcp-websocket/
45//! ├── config.rs # Configuration types and builders
46//! ├── types.rs # Core types and type aliases
47//! ├── connection.rs # Connection management and lifecycle
48//! ├── tasks.rs # Background task management
49//! ├── elicitation.rs # Elicitation handling and timeout management
50//! ├── mcp_methods.rs # MCP protocol method implementations
51//! ├── transport.rs # Main Transport trait implementation
52//! └── bidirectional.rs # BidirectionalTransport trait implementation
53//! ```
54
55#![warn(
56 missing_docs,
57 missing_debug_implementations,
58 rust_2018_idioms,
59 unreachable_pub,
60 clippy::all
61)]
62#![deny(unsafe_code)]
63#![cfg_attr(docsrs, feature(doc_cfg))]
64#![allow(
65 clippy::module_name_repetitions,
66 clippy::missing_errors_doc,
67 clippy::missing_panics_doc,
68 clippy::must_use_candidate
69)]
70
71pub mod bidirectional;
72pub mod config;
73pub mod connection;
74pub mod elicitation;
75pub mod mcp_methods;
76pub mod tasks;
77pub mod transport;
78pub mod types;
79
80// Re-export main types for convenience
81pub use bidirectional::CorrelationInfo;
82pub use config::{ReconnectConfig, TlsConfig, WebSocketBidirectionalConfig};
83pub use elicitation::ElicitationInfo;
84pub use transport::TransportStatus;
85pub use types::{
86 MessageProcessingResult, PendingElicitation, WebSocketBidirectionalTransport,
87 WebSocketConnectionStats, WebSocketStreamHandler,
88};
89
90// Re-export transport traits for convenience
91pub use turbomcp_transport_traits::{
92 BidirectionalTransport, ConnectionState, CorrelationContext, MessageDirection, Transport,
93 TransportCapabilities, TransportConfig, TransportError, TransportEvent, TransportEventEmitter,
94 TransportMessage, TransportMessageMetadata, TransportMetrics, TransportResult, TransportState,
95 TransportType,
96};