Rust के लिए WebSocket लाइब्रेरीज़: tungstenite और tokio-tungstenite
\n\nWebSocket एक प्रोटोकॉल है जो एक TCP कनेक्शन पर क्लाइंट और सर्वर के बीच पूर्ण-द्वैध संचार प्रदान करता है। Rust इकोसिस्टम में, WebSocket के साथ काम करने के लिए सबसे लोकप्रिय लाइब्रेरीज़ tungstenite (सिंक्रोनस) और tokio-tungstenite (Tokio पर आधारित एसिंक्रोनस) हैं। दोनों लाइब्रेरीज़ WebSocket सर्वर और क्लाइंट बनाने के लिए उच्च-स्तरीय API प्रदान करती हैं, मानक एक्सटेंशन और TLS के माध्यम से सुरक्षा का समर्थन करती हैं।
\n\nमुख्य विशेषताएं
\n- \n
- tungstenite: WebSocket (RFC 6455) का सिंक्रोनस कार्यान्वयन, ब्लॉकिंग ऑपरेशन का समर्थन करता है, सरल स्क्रिप्ट और एम्बेडिंग के लिए उपयुक्त है। \n
- tokio-tungstenite: tungstenite के ऊपर एसिंक्रोनस रैपर, Tokio रनटाइम के साथ एकीकृत, एक साथ हजारों कनेक्शन संभालने की अनुमति देता है। \n
- फ्रेम, संदेश, पिंग/पोंग, कनेक्शन बंद करने का समर्थन। \n
- TLS के साथ काम करना (
rustlsयाnative-tlsके माध्यम से)। \n - WebSocket एक्सटेंशन का समर्थन (जैसे permessage-deflate संपीड़न)। \n
- सरल सेटअप और न्यूनतम निर्भरताएं। \n
स्थापना
\nCargo.toml में लाइब्रेरी जोड़ें:
[dependencies]\ntokio-tungstenite = "0.21" # एसिंक्रोनस विकल्प\ntungstenite = "0.21" # सिंक्रोनस विकल्प\ntokio = { version = "1", features = ["full"] } # tokio-tungstenite के लिए\n\n\nएसिंक्रोनस WebSocket सर्वर का उदाहरण (tokio-tungstenite)
\nएक सरल इको सर्वर बनाएं जो टेक्स्ट संदेश प्राप्त करता है और उन्हें वापस भेजता है:
\nuse tokio::net::TcpListener;\nuse tokio_tungstenite::accept_async;\nuse tokio_tungstenite::tungstenite::Message;\nuse futures_util::{SinkExt, StreamExt};\n\n#[tokio::main]\nasync fn main() -> Result<(), Box<dyn std::error::Error>> {\n let listener = TcpListener::bind("127.0.0.1:9001").await?;\n println!("WebSocket सर्वर ws://127.0.0.1:9001 पर शुरू हुआ");\n\n while let Ok((stream, peer)) = listener.accept().await {\n tokio::spawn(handle_connection(stream, peer));\n }\n Ok(())\n}\n\nasync fn handle_connection(stream: tokio::net::TcpStream, peer: std::net::SocketAddr) {\n let ws_stream = match accept_async(stream).await {\n Ok(ws) => ws,\n Err(e) => {\n eprintln!("कनेक्ट करने में त्रुटि {}: {}", peer, e);\n return;\n }\n };\n\n let (mut write, mut read) = ws_stream.split();\n println!("नया कनेक्शन: {}", peer);\n\n while let Some(msg) = read.next().await {\n match msg {\n Ok(Message::Text(text)) => {\n println!("{} से प्राप्त: {}", peer, text);\n if let Err(e) = write.send(Message::Text(text.into())).await {\n eprintln!("भेजने में त्रुटि: {}", e);\n break;\n }\n }\n Ok(Message::Close(_)) => {\n println!("क्लाइंट {} डिस्कनेक्ट हुआ", peer);\n break;\n }\n Err(e) => {\n eprintln!("त्रुटि: {}", e);\n break;\n }\n _ => {} // बाइनरी और नियंत्रण संदेशों को अनदेखा करें\n }\n }\n}\n\n\nसिंक्रोनस WebSocket क्लाइंट का उदाहरण (tungstenite)
\nएक सरल क्लाइंट जो सर्वर से कनेक्ट होता है और संदेश भेजता है:
\nuse tungstenite::{connect, Message};\nuse url::Url;\n\nfn main() -> Result<(), Box<dyn std::error::Error>> {\n let url = Url::parse("ws://echo.websocket.org")?;\n let (mut socket, response) = connect(url)?;\n\n println!("सर्वर से कनेक्ट हुआ");\n println!("HTTP स्थिति: {}", response.status());\n\n socket.send(Message::Text("नमस्ते, WebSocket!".into()))?;\n println!("संदेश भेजा गया");\n\n let msg = socket.read()?;\n if let Message::T पुस्तकालय में भी
Swift में अंतर्राष्ट्रीयकरण (i18n): NSLocalizedString और String Catalog
Go (Golang) के लिए OAuth क्लाइंट: पूर्ण गाइड और लाइब्रेरी
Swashbuckle C# (.NET) पूरी गाइड: उदाहरण और सेटअप
Swift में JSON प्रोसेसिंग: Codable, JSONSerialization और व्यावहारिक उदाहरण