ios - क्या AWS लैम्ब्डा के साथ Socket.io का उपयोग करना संभव है?




sockets amazon-web-services (6)

अपडेट (AWS re: invent 2018 के बाद से): API गेटवे अब वेबसोकेट का समर्थन करता है! ऐसे उदाहरण देखें जो लैम्बडा के साथ एपीआई गेटवे वेबस्केट का उपयोग करते हैं:

और एपीआई गेटवे की इस विशेषता के लिए प्रलेखन यहां: https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api.html

Node.js फ्रेमवर्क का एक दिलचस्प उदाहरण भी है जो API गेटवे के साथ सॉकेट .io का उपयोग करता है, लेकिन मैंने जांच नहीं की है कि क्या यह विशेष रूप से आपके उपयोग के मामले में काम करेगा: https://github.com/tiaod/moleculer-io

आपको अमेज़ॅन IoT कोर का उपयोग करने पर विचार करना चाहिए। मैं समझाऊंगा।

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

फिर आप सभी ग्राहकों को अपडेट पुश करने के लिए AWS लैम्ब्डा (जो आपकी Kinesis पाइपलाइन के माध्यम से आने वाली घटनाओं से ट्रिगर किया जा सकता है) का उपयोग करके स्ट्रीमिंग एनालिटिक्स (और वैकल्पिक रूप से अतिरिक्त ईवेंट प्रदान किए गए डेटा) का उपभोग कर सकते हैं। यदि आप प्रत्येक उपयोगकर्ता के लिए "विषय" बनाते हैं तो विशेष रूप से अमेज़ॅन IoT कोर सेवा के माध्यम से वायर्ड होने पर आप इन ग्राहकों के लिए वास्तविक समय में अपडेट को धक्का दे सकते हैं। सेवा को इस तरह से डिज़ाइन किया गया है कि आपके पास जितने विषय हो सकते हैं, उनकी ऊपरी सीमा नहीं है, इसलिए इसे व्यापक स्तर पर होना चाहिए।

यह एक सर्वोत्तम-अभ्यास "बिग-डेटा" सर्वर रहित (जब तक आप वीएम बनाए रखने से बचते हैं और केवल सर्वर रहित / प्रबंधित सेवाओं का उपयोग करते हैं) आपकी समस्या का एक उदाहरण है, और यह अधिक लोचदार, लागत प्रभावी, आसान होगा अपने स्वयं के EC2 उदाहरणों को प्रबंधित करने और लोड-बैलेंसिंग और उपलब्धता और प्रतिकृति और सर्वर-स्टेट और बेदखली और व्यर्थ संसाधनों और तैनाती संसाधनों और तैनाती पाइपलाइन और उदाहरण निगरानी, ​​आदि के साथ अतिरिक्त सिरदर्द के बारे में चिंता करने की आवश्यकता से। आदि..

यदि आप Amazon IoT Core सेवा का उपयोग करते हैं, तो आप ईवेंट्स को सीधे क्लाइंट ब्राउज़र के साथ MQTT (जो कि बहुत तेज़ और हल्का है) पर वेब ब्राउज़र पर धकेल सकते हैं और आप इसे सीधे AWS लैम्ब्डा के साथ एकीकृत कर सकते हैं। यहाँ एक बेहतरीन डेमो ऐप है जो IoT Core का उपयोग करता है: https://github.com/aws-samples/aws-iot-chat-example

व्यक्तिगत रूप से, मैं उस दृष्टिकोण को पसंद करता हूं जो कम खर्चीला है, बनाए रखने में आसान है, बेहतर प्रदर्शन करता है, मुझे रात को सोने की अनुमति देता है, और मुझे निर्बाध नींद प्राप्त करने की अनुमति देता है जो कि बुरे सपने से मुक्त है।

क्या एडब्ल्यूएस लाम्बा में एक समारोह का निर्माण संभव है जो एक वेबसोकेट बनाता है और सब्सक्राइब्ड एप्लिकेशन को डेटा भेजता है?

कुछ इस तरह:

जॉन ने अपने फोन में SuperPhotoApp ऐप खोला है, लेकिन SuperPhotoApp सेवा (एक S3 बकेट) में फ़ोटो अपलोड करने के लिए डेस्कटॉप ब्राउज़र का उपयोग करने का निर्णय लेता है, यह ईवेंट एक लैंबडा फ़ंक्शन को निष्पादित करता है जो एक सॉकेट बनाता है ।io सर्वर और सभी ग्राहकों को अपडेट पुश करता है , उसके फोन में ऐप था, जिससे ऐप स्वचालित रूप से नए फोटो के साथ अपडेट हो गया।

यह कुछ ऐसा है जो पुश नोटिफिकेशन या अमेज़ॅन एसएनएस के साथ किया जा सकता है, लेकिन क्या होगा यदि मुझे एक ऑनलाइन गेम उदाहरण के लिए वास्तविक समय के व्यवहार की आवश्यकता है जहां मुझे एक चरित्र की स्थिति को अपडेट करने की आवश्यकता है।

यदि यह लैम्ब्डा के साथ संभव नहीं है, तो क्या कोई समाधान है जहां मैं डेस्कटॉप ब्राउज़र का उपयोग करके अपने खुले ऐप को अपडेट कर सकता हूं?

अमेज़न EC2 एकमात्र विकल्प है? मैंने पढ़ा है कि इसमें स्केलिंग की समस्या है, इसलिए मैं लैम्बडा पर टिप्पणी कर रहा हूं।


आप सॉकेटियो सर्वर को होस्ट करने के लिए लैम्बडा का उपयोग नहीं कर सकते। लेकिन आप एक बाहरी सॉकेटियो सर्वर में घटनाओं का उत्सर्जन करने के लिए लैम्ब्डा का उपयोग कर सकते हैं


मुझे लगता है कि आप AWS लैंबडा को अन्य PUB / SUB सेवा जैसे PUBNUB https://www.pubnub.com/docs/pubnub-rest-api-documentation साथ जोड़ सकते हैं।

  1. फ्रंट-एंड / ऐप AWS लैम्ब्डा का उपयोग विषयों को गतिशील रूप से बनाने और प्रबंधित करने के लिए करते हैं
  2. फ्रंट-एंड / ऐप को AWS लैम्ब्डा या DB से विषय की जानकारी मिलती है
  3. फ्रंट-एंड / ऐप, संबंधित विषयों से जुड़ते हैं और सीधे PUBNUB को संदेश भेजते हैं

यदि आप वास्तविक समय की कार्यक्षमता की तलाश में हैं तो मैं फायरबेस रियल टाइम डेटाबेस या फायरस्टोर की ओर रुख करूंगा। मैं दोनों का उपयोग बहुत भारी है और मुझे कहना है कि वे अद्भुत हैं। इसे यहां देखें https://firebase.google.com


हाल ही में AWS ने IoT सेवा के लिए WebSockets का समर्थन जारी किया । सर्वर रहित वेब अनुप्रयोगों के लिए पब / उप संदेश प्रणाली के रूप में उपयोग करना बहुत आसान है। आप http post request माध्यम से AWS lambda function से नए संदेश पोस्ट कर सकते http post request और उन्हें क्लाइंट पर वेबसोकेट संदेशों के रूप में प्राप्त कर सकते हैं।

मैंने एक छोटा सा npm पैकेज लिखा है जो फ्रंट-एंड ऐप से MQTT सर्वर से वेबसैट कनेक्शन को संभालता है। aws-mqtt-client जाँच करें


नहीं! लैम्ब्डा सॉकेट के लिए डिज़ाइन नहीं किया गया था। लैंबडा को केवल कम समय के प्रसंस्करण के लिए डिजाइन किया गया था।

यदि आप सस्ती सूचनाएं प्रदान करना चाहते हैं, तो आप PubNub या Realtime फ्रेमवर्क जैसी बाहरी सेवाओं की कोशिश कर सकते हैं।

यदि आप केवल अमेज़ॅन सेवाओं का उपयोग कर बने रहना चाहते हैं, तो SNS कोशिश करने से परेशान न हों क्योंकि यह इस उपयोग के मामले में काम नहीं करेगा (ब्राउज़र के लिए कोई समापन बिंदु नहीं है)।

हालाँकि, आप AWS IoT की कोशिश कर सकते हैं। मुझे पता है कि यह अजीब लगता है, लेकिन चूंकि यह एमक्यूटीटी के माध्यम से ब्राउज़रों का समर्थन करता है, इसलिए यह सस्ते, तेज और सूचनाओं को विकसित करने में आसान उपकरण है। एक महान ट्यूटोरियल के लिए this लिंक का पालन this । डेमो कोड here उपलब्ध here







aws-lambda