2014-10-10 8 views
22

से परे मैंने अभी यह post पढ़ा है, और मुझे समझ में आता है कि अंतर क्या है। लेकिन अभी भी मेरे सिर में मेरा सवाल है। क्या मैं इसे उसी ऐप/वेबसाइट में उपयोग कर सकता/सकती हूं? मान लें कि मैं AngularJs को सामग्री लाने और अपने पृष्ठ को अपडेट करने के लिए, एक आरईएसटी एपीआई और उन सभी शीर्ष सामग्री से कनेक्ट करना चाहता हूं। लेकिन इसके शीर्ष पर मैं एक रीयलटाइम चैट भी चाहता हूं, या किसी अपडेट या संदेश प्राप्त होने पर अन्य क्लाइंट पर ईवेंट ट्रिगर करना चाहता हूं।एंगुलरजेएस और वेबसाकेट

क्या कोणीय समर्थन करता है? या मुझे उन घटनाओं को ट्रिगर करने के लिए सॉकेट.ओओ जैसे कुछ उपयोग करने की आवश्यकता है? क्या यह दोनों का उपयोग करने के लिए समझ में आता है? अगर कोई मेरी मदद कर सकता है या मुझे इसके बारे में कुछ अच्छी पढ़ने के लिए इंगित कर सकता है यदि उनमें से दोनों का उपयोग करने का कोई उद्देश्य है।

आशा है कि मैं काफी स्पष्ट हूं। हर प्रकार की सहायता के लिए आपका धन्यवाद।

उत्तर

16

जावास्क्रिप्ट WebSocket का समर्थन करता है, तो आप इसे उपयोग करने के लिए एक अतिरिक्त ग्राहक के पक्ष ढांचे की जरूरत नहीं है। कृपया इस $connection service पर इस WebSocket based AngularJS application में घोषित देखें।

मूल रूप से आप संदेशों के लिए सुन सकते हैं:

$connection.listen(function (msg) { return msg.type == "CreatedTerminalEvent"; }, 
     function (msg) { 
      addTerminal(msg); 
      $scope.$$phase || $scope.$apply(); 
    }); 

एक बार सुनो (अनुरोध/प्रतिक्रिया के लिए महान): और भेज

$connection.listenOnce(function (data) { 
     return data.correlationId && data.correlationId == crrId; 
    }).then(function (data) { 
     $rootScope.addAlert({ msg: "Console " + data.terminalType + " created", type: "success" }); 
    }); 

संदेशों:

$connection.send({ 
     type: "TerminalInputRequest", 
     input: cmd, 
     terminalId: $scope.terminalId, 
     correlationId: $connection.nextCorrelationId() 
    }); 

आमतौर पर, एक के बाद से वेबसॉकेट कनेक्शन बिडरेक्शनल और has a good support है, आप इसे डेटा fr प्राप्त करने के लिए भी उपयोग कर सकते हैं ओम सर्वर अनुरोध/प्रतिक्रिया मॉडल में।

  • प्रकाशक/सब्सक्राइबर:: जहां ग्राहक कुछ विषयों में अपनी रुचि वाणी और उस विषय के साथ संदेश के लिए संचालकों निर्धारित करते हैं, और उसके बाद सर्वर प्रकाशित (या धक्का) संदेशों जब भी यह आप दो मॉडल हो सकता है फिट देखता है

  • अनुरोध/प्रतिक्रिया: जहां ग्राहक अनुरोध आईडी (या सहसंबंध आईडी) के साथ एक संदेश भेजता है, और उस अनुरोध के लिए एक प्रतिक्रिया के लिए सुनें।

फिर भी, आप अपडेट प्राप्त करने के लिए दोनों अगर आप चाहते हैं हो सकता है, और हो रही डेटा के लिए बाकी का उपयोग करें, और WebSocket।

सर्वर पक्ष में, आपको वेब सॉकेट समर्थन के साथ बैकएंड रखने के लिए सॉकेट.ओ या जो भी सर्वर साइड फ्रेमवर्क का उपयोग करने की आवश्यकता हो सकती है।

+1

अच्छा उदाहरण है, लेकिन ध्यान दें कि $ कनेक्शन कोणीय का हिस्सा नहीं है, $ से शुरू होने वाली सेवाओं को कोणीय एपीआई के लिए आरक्षित किया जाना चाहिए। – pdem

7

जैसा कि आपके लिंक किए गए पोस्ट में answer में उल्लेख किया गया है, कोणीय में वर्तमान में वेबसाइट्स के लिए अंतर्निहित समर्थन नहीं है। इसलिए, आपको सीधे Websockets API का उपयोग करना होगा, या Socket.io जैसी अतिरिक्त लाइब्रेरी का उपयोग करना होगा।

हालांकि, अगर आपको एक सिंगल एंगुलर एप्लिकेशन में एक आरईएसटी एपीआई और वेबसाइट्स दोनों का उपयोग करना चाहिए, तो आपके प्रश्न का उत्तर देने के लिए कोई कारण नहीं है कि आपके पास मानक XmlHttpRequest अनुरोध दोनों को एक आरईएसटी एपीआई के साथ बातचीत करने के लिए अनुरोध नहीं किया जा सकता है, $ http का उपयोग कर या किसी अन्य डेटा लेयर लाइब्रेरी जैसे कि BreezeJS, एप्लिकेशन के विभिन्न हिस्सों में शामिल कुछ कार्यक्षमता के लिए और किसी अन्य भाग के लिए वेस्केट्स का उपयोग भी करें (जैसे रीयल टाइम चैट)।

कोणीय इस प्रकार के परिदृश्य को संभालने में सहायता के लिए डिज़ाइन किया गया है। एप्लिकेशन कार्यक्षमता को संभालने और अपने पृष्ठ को अपडेट करने के लिए एक या अधिक नियंत्रकों को बनाने के लिए एक सामान्य समाधान होगा और फिर अलग-अलग सेवाओं या कारखानों का निर्माण करना होगा जो आपके प्रत्येक डेटा एंड पॉइंट्स (यानी आरईएसटी एपीआई और रीयलटाइम चैट सर्वर) के डेटा प्रबंधन को समाहित करते हैं।), जिन्हें तब नियंत्रकों में इंजेक्शन दिया जाता है।

डेटा कनेक्शन प्रबंधित करने के लिए कोणीय सेवाओं/कारखानों का उपयोग करने पर बहुत सारी जानकारी उपलब्ध है। यदि आप एक कोणीय अनुप्रयोग बनाने के तरीके और जहां डेटा सेवाएं फिट होंगी, इस बारे में मार्गदर्शन करने में सहायता के लिए संसाधन ढूंढ रहे हैं, तो मैं जॉन पापा के AngularJS Styleguide को देखने की अनुशंसा करता हूं, जिसमें Data Services पर एक अनुभाग शामिल है।

कारखानों और सेवाओं के बारे में अधिक जानकारी के लिए आप देख सकते हैं AngularJS : When to use service instead of factory

संबंधित मुद्दे