मैं वेबसाइकिल के माध्यम से क्लाइंट और सर्वर के बीच कनेक्शन स्थापित करने के लिए नोडजेस + वेबस्केट मॉड्यूल का उपयोग कर रहा हूं। सर्वर क्लाइंट को कई बार डेटा उत्सर्जित करता है: मुझे पता है कि यह एक टीसीपी कनेक्शन है, लेकिन मुझे इसके बारे में हर संदेह को हटाने दें। क्या "उत्सर्जित" अनुक्रमिक हैं? यदि पहली बार "उत्सर्जित" समय 1s पर किया गया था और दूसरी बार "emit" समय 2s पर किया गया था, तो क्लाइंट निश्चित रूप से पहले उत्सर्जक और फिर दूसरा प्राप्त करेगा? क्या होता है यदि पहले उत्सर्जन अभी तक प्राप्त नहीं हुआ है और दूसरा उत्सर्जित है? कॉल अवरुद्ध कर रहे हैं?वेबसाइट: क्या सर्वर डेटा समकालिक रूप से भेजा जाता है?
उत्तर
वेबसाकेट टीसीपी पर बनाया गया है। टीसीपी पैकेट की डिलीवरी और ऑर्डरिंग की गारंटी देता है। इसके अलावा, टीसीपी के विपरीत, वेबस्केट्स संदेश आधारित है जिसका अर्थ है कि वेबसाकेट संदेश पूरे संदेश के रूप में प्राप्त होते हैं (टीसीपी स्ट्रीमिंग है और 'संदेश' श्रोता के परिप्रेक्ष्य से खंडित हो सकता है)
नोड.जेएस में, दो उत्सर्जक उसी संदर्भ से कहा जाता है (वही कार्य) एक दूसरे के बाद उस क्रम में वितरित किया जाएगा। हालांकि, यदि आपके उत्सर्जन दो अलग-अलग कॉलबैक में हैं, तो आप हमेशा गारंटी नहीं दे सकते कि Node.js उन कॉलबैक को शेड्यूल करेगा और इसलिए उत्सर्जित पुन: आदेश प्राप्त हो सकते हैं क्योंकि निर्धारित कॉलबैक को फिर से आदेश दिया गया है।
अद्यतन:
fs.readFile(file1,function(e,data) { ws.send(data); });
fs.readFile(file2,function(e,data) { ws.send(data); });
आदेश:
यहाँ क्यों Node.js की घटना संचालित प्रकृति WebSocket की आश्चर्य की बात फिर से आदेश देने में हो सकता है पर विस्तार करने के लिए एक उदाहरण है/भेजता का उत्सर्जन करता है ब्राउज़र में फ़ाइल 1 और फ़ाइल 2 वितरित किया जाएगा अनुमानित नहीं है (यहां तक कि फाइल का आकार कैशिंग, फाइल-सिस्टम विखंडन इत्यादि जैसी चीजों के कारण आग लगने की गारंटी नहीं है)। भले ही फ़ाइल 2 के readFile को एक सेटटाइमआउट का उपयोग करके 1 सेकंड बाद कहा जाता है, फिर भी ब्राउज़र उन्हें ऑर्डर से बाहर कर सकता है (उदाहरण के लिए यदि फ़ाइल 1 बहुत बड़ा है और पढ़ने के लिए 3s लेता है तो फ़ाइल 1 के भेजने के बाद फ़ाइल 2 के लिए भेजा जाएगा) ।
तो हाँ, नोड्स.जेएस में कॉल किए जाने वाले क्रम में ब्राउजर में उत्सर्जित/भेज दिया जाएगा, लेकिन नोड.जेएस की असीमित घटना संचालित प्रकृति के कारण उत्सर्जन/भेज आपके क्रम में नहीं हो सकता है उम्मीद करते हैं।
नोड.जेएस की असीमित घटना संचालित प्रकृति नोड.जेएस उत्कृष्ट दक्षता और प्रदर्शन प्रदान करती है, लेकिन यदि आप इस प्रकार के कॉलबैक आधारित प्रोग्रामिंग के लिए उपयोग नहीं करते हैं तो इसमें कुछ आश्चर्यजनक परिणाम हो सकते हैं।
"हालांकि, यदि आपके उत्सर्जन दो अलग-अलग कॉलबैक में हैं, तो आप हमेशा गारंटी नहीं दे सकते कि Node.js उन कॉलबैक को शेड्यूल करेगा और इसलिए उत्सर्जित पुन: आदेश प्राप्त हो सकते हैं क्योंकि निर्धारित कॉलबैक को फिर से आदेश दिया गया है।" - अगर कॉलबैक 1 कॉलबैक 2 से पहले भाग गया, और वे प्रत्येक उत्सर्जित करते हैं, तो कॉलबैक 1 की उत्सर्जन * कॉलबैक 2 के उत्सर्जन से पहले * चलाएगी। – einaros
@ इनारोस, यह सच है लेकिन मेरा मुद्दा यह है कि कॉलबैक स्वाभाविक रूप से असीमित हैं ताकि आप उस आदेश की गारंटी नहीं दे सकें जिसमें वे आग लगाएंगे। यहां तक कि यदि आप कॉलबैक बी पंजीकृत करने से पहले कॉलबैक ए 1 सेकंड पंजीकृत करते हैं, तो कॉलबैक ए के साथ नियमित रूप से पूरा होने में 3 सेकंड लगते हैं और बी केवल 1 सेकंड लेता है, तो बी पहले से पंजीकृत होने के बावजूद ए से पहले होगा। और आई/ओ पूरा होने पर गोलीबारी कर रहे किसी भी कॉलबैक में अक्सर अप्रत्याशित समय होगा। – kanaka
यह देखते हुए कि एक विशिष्ट घटना के लिए किसी विशिष्ट क्रम में पंजीकृत कॉलबैक हमेशा उस क्रम में निष्पादित होंगे, मैं बिल्कुल नहीं देखता कि शेष में से कोई भी ओपी के प्रश्न से कैसे संबंधित है। यह स्पष्ट है कि यदि उत्सर्जन ट्रिगर करने वाली घटनाएं ऑर्डर बदलती हैं; उत्सर्जन भी आदेश बदल जाएगा। – einaros
- 1. क्या AFNetworking डेटा को समकालिक रूप से वापस कर सकता है (एक ब्लॉक के अंदर)?
- 2. क्यों HttpWebRequest.BeginGetResponse() समकालिक रूप से पूरा करता है?
- 3. एंड्रॉइड (क्लाइंट के रूप में) से टीसीपी डेटा भेजना - कोई डेटा नहीं भेजा जा रहा है?
- 4. वार्निश को 304 अनमोडिफाइड क्यों नहीं भेजा जाता है जब-संशोधित-हेडर भेजा जाता है?
- 5. क्या यूआरएल खंड पहचानकर्ता सर्वर को भेजा गया है?
- 6. (रूबी में क्या भेजा जाता है) करते हैं?
- 7. क्या Google डेटा सर्वर पर डेटा भ्रष्टाचार स्वचालित रूप से पता चला है?
- 8. भेजा जा रहा है
- 9. क्या dust.js टेम्पलेट्स को समकालिक रूप से प्रस्तुत करना संभव है?
- 10. क्या डार्ट के भविष्य को समकालिक रूप से चलाने का कोई तरीका है?
- 11. PHP मेल नहीं भेजा जाता है, मैं डीबग कैसे करूं?
- 12. आरएसए एन्क्रिप्टेड डेटा HTTP पर भेजा जा सकता है?
- 13. बचत बैकबोन.जेएस मॉडल डेटा। डेटा सही ढंग से नहीं भेजा गया
- 14. सुरक्षित रूप से सर्वर
- 15. gunicorn समकालिक अनुरोधों समवर्ती
- 16. memcached वेबसाइट धीमा हो जाता है
- 17. पीएचपी मेल सही दिखाए, लेकिन ईमेल नहीं भेजा जाता है
- 18. क्या यह तकनीकी रूप से वेबसाइट की स्क्रीनशॉट लेने के लिए तकनीकी रूप से संभव है?
- 19. एसक्यूएल सर्वर में डेटा कैसे संग्रहीत किया जाता है?
- 20. क्या विजुअल एसवीएन सर्वर आम तौर पर भरोसेमंद एसवीएन सर्वर के रूप में देखा जाता है?
- 21. PHP सबमिट करने के बाद पासवर्ड को टेक्स्ट के रूप में भेजा जाता है?
- 22. क्या विंडोज वर्कफ़्लो व्यापक रूप से उपयोग किया जाता है?
- 23. क्या धागा स्वचालित रूप से बंद हो जाता है?
- 24. कौन सा SendAsync विधि है जब एक HttpClientHandler HttpClient में भेजा जाता है कहा जाता है
- 25. क्या यूआरएल पैरामीटर के माध्यम से एचटीटीपीएस पर उपयोगकर्ता नाम और पासवर्ड सुरक्षित रूप से भेजा जा सकता है?
- 26. वेबसाइट पुनर्निर्देशन की जांच, प्रोग्रामेटिक रूप से
- 27. ब्राउज़र स्वतंत्र रूप से पढ़ा जाता है?
- 28. AJAX के बिना फ़ाइल को खींचें और ड्रॉप करें, अग्रभूमि में समकालिक रूप से?
- 29. विफल कॉलबैक कहा जाता है हालांकि अजाक्स अनुरोध किया जाता है और सर्वर डेटा
- 30. AJAX द्वारा डेटा भेजते समय, डेटा खो जाता है
http://stackoverflow.com/q/11804721/632951 – Pacerier