पर वेबसाइकिल और http सर्वर चलाना मैं जंग, हाइपर और websocket-rs का उपयोग कर एक वेबसर्वर लिखना चाहता हूं। वेबसर्वर एक ही पोर्ट पर http अनुरोध और websocket अनुरोध को संभालने में सक्षम होना चाहिए। मैंने आधिकारिक नमूना (async-server.rs
: https://github.com/cyderize/rust-websocket/blob/master/examples/async-server.rs) का उपयोग किया और इसे संशोधित करने का प्रयास किया। मेरा विचार त्रुटि प्रबंधन को बदलना था। यदि ग्राहक का अनुरोध एक साधारण http अनुरोध है तो एक त्रुटि वापस न करें, लेकिन भविष्य के लिए अनुरोध करें जो इसके बजाय अनुरोध को संभालता है।एक ही बंदरगाह (जंग, हाइपर)
किसी अन्य SO प्रश्न (How do I handle an error when using rust-websocket so that only that connection fails and not the entire program?) के आधार पर मैंने नमूना से त्रुटि प्रबंधन को बदल दिया।
.map(Some).or_else(|_| -> Result<_,()> {
// SPAWN THE FUTURE
Ok(None)
})
यह वह जगह है जहाँ मैं अटक कर रहा हूँ:
.map_err(|InvalidConnection {error, ..}| {
println!("Error:{:?}",error);
return error;
})
यह मेरा नया कोड है:
इस पुराने कोड है। नमूना कोड एक फंक्शन spawn_future
कहते हैं, जो पैरामीटर (upgrade.reject()
) की अपेक्षा करता है जो मेरे कोड में उपलब्ध नहीं है क्योंकि मेरे पास upgrade
संरचना तक पहुंच नहीं है। मैंने कुछ अन्य चीजों की कोशिश की (यानी handle.spawn_fn
पर कॉल करना) लेकिन संकलक को मैंने कभी पसंद नहीं किया। (मैं संकलक त्रुटियों के कुछ पेस्ट कर सकता है, लेकिन मुझे नहीं लगता है कि वे अपनी पोस्ट की गुणवत्ता में सुधार होगा।)
यहाँ मेरे सवाल है: एक अतुल्यकालिक सर्वर जो संभाल कर सकते हैं लिखने के लिए सिफारिश की तरीका क्या है एक ही बंदरगाह पर http अनुरोध और websocket अनुरोध? यदि मेरा दृष्टिकोण सही है: क्या आप कृपया SPAWN THE FUTURE
लाइन भरने में मेरी सहायता कर सकते हैं?
अतिरिक्त संदर्भ (यदि आपने अभी तक ध्यान नहीं दिया है): मैं कुल जंग की शुरुआत कर रहा हूं।
धन्यवाद। यह प्रलेखन में अच्छी तरह छुपा था। मुझे यह नहीं मिला होता। – cruppstahl