Skip to main content

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};