Node.js में सत्रों का प्रबंधन? [बन्द है]


101

Node.js में सत्र चर का प्रबंधन करने का सबसे अच्छा तरीका क्या है? क्या कोई पुस्तकालय है?

जवाबों:


95

आप बहुत आसानी से उपयोग कर सकते हैं:

  • कनेक्ट करें: http://senchalabs.github.com/connect/

    रूबी में कनेक्ट्स रैक की तरह है। यह आपको एक अतिरिक्त परत देता है जहां आप प्रमाणीकरण, सत्र, कुकीज़, दूसरों के साथ "खेल" सकते हैं।

अन्य विकल्प फ्रेमवर्क का उपयोग करना है:

  • Express.js: http://expressjs.com/

    यह सबसे अधिक इस्तेमाल किया जाने वाला नोड है। जेएस फ्रेमवर्क। रूबी के लिए सिनात्रा की तरह है और कनेक्ट के शीर्ष पर चलता है।

  • गेड्डी: http://geddyjs.org/

    यदि आप अधिक जटिल WebApps करना चाहते हैं, तो Geddy वह है जिसे आप चुनते हैं। रूबी के लिए रेल की तरह है।


/ ओवर एक्सप्रेस के ऊपर geddy क्या प्रदान करता है? - सिनात्रा और रेल के रूप में समान अंतर?
माइकल


4
मुझे लगता है कि आपको उल्लेख करना चाहिए कि एक्सप्रेस कनेक्ट के शीर्ष पर बनाया गया है - कनेक्ट के साथ संगत कोई भी सुविधाएँ या एडोनस एक्सप्रेस के साथ काम करेंगे।
जोनाथन ड्यूमाइन


14

बस इसे याद करने के लिए या कुछ अन्य कैशिंग तंत्र से लोड करें। मैं आपके सर्वर को इस तरह का बोझ नहीं डालूंगा। एक सुपर लीन वेब सर्वर की क्या बात है जो सामान को याद रखना है।

मैं आपकी साइट को एक एप्लिकेशन के रूप में विकसित करने का प्रयास करूंगा, न कि एक वेबसाइट के रूप में, या आपकी वेबसाइट को एप्लिकेशन के रूप में मानने के लिए, HTML5 की अद्भुत विशेषताओं जैसे स्थानीय भंडारण / स्थानीय डेटाबेस का उपयोग करें और सर्वर और क्लाइंट मशीनों के बीच यातायात की मात्रा में कटौती करें ।

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

संरचना एक ऐसा शब्दकोष होना चाहिए जिसमें महत्वपूर्ण सत्र और मूल्य एक वस्तु हो जिसमें अंतिम संचार और क्षमताओं का विवरण हो (कुछ सुविधाओं तक पहुंच को सक्षम करना)। पुराने सत्रों को समाप्त करने के लिए एक स्वीप फ़ंक्शन जोड़ें जो समय समाप्त हो गया हो। और बिंगो। एक बुनियादी सत्र सेवा। पर एक बुनियादी जाँच "सूची में सत्र कुंजी है ... हाँ / नहीं ... विवरण प्राप्त करें ..." और मुझे लगता है कि यह .... या वहाँ कुछ विशेषता है कि मैं याद कर रहा हूँ।

मैं व्यक्तिगत रूप से यथासंभव किसी भी तीसरे पक्ष के उपकरण से बचूंगा। बहुत समय बीत जाता है और आप हमेशा अपने द्वारा विकसित कोड पर निर्भर रह सकते हैं।


16
मेरे अनुभव में, हर बार जब आप एक नया थर्ड पार्टी टूल जोड़ते हैं, तो आप अपने आप को उस तीसरे पक्ष में बाँध लेते हैं, जो आपके विकास के जीवन प्रत्याशा के लिए है। यह बुरा है, अच्छे कोड के किसी के विचार के नियंत्रण और समझ की कमी जो कि ब्लैक बॉक्सिंग है, जब कुछ गलत हो जाता है (तो यह हमेशा होता है)। आपको तीसरे पक्ष के लाइसेंस समझौतों से जुड़े कई अस्वीकरण मिलेंगे, "स्वयं के जोखिम पर उपयोग" वह है जो मैं अक्सर देखता हूं। समय की रेत जल्दी और सिर्फ इसलिए बदलाव करती है क्योंकि कोई कहता है कि कोड 1.0 का मतलब जैक नहीं है।
WeNeedAnswers

6
यदि आप कोड को स्वयं प्रोग्राम कर सकते हैं और सबसे महत्वपूर्ण रूप से कोड को समझ सकते हैं, और कोड को उचित समय में विकसित किया जा सकता है, तो आप तीसरे पक्ष के टूल का उपयोग क्यों करेंगे? और मुझे उन सभी कोड पर भरोसा है जो मैं किसी तीसरे पक्ष से कहीं अधिक लिखता हूं। मैं एक इंजीनियर नहीं एक कलाकार हूं, मैं ऐसे कोड का निर्माण करता हूं जो कभी-कभी टूट जाता है लेकिन कभी ढहता नहीं है। कोड के लिए कोई बहाना नहीं है जो परीक्षण नहीं किया गया है। एकीकरण परीक्षण, इकाई परीक्षण, प्रतिगमन परीक्षण जैसे उपकरणों के साथ आप यह कहने के लिए किस बहाने का उपयोग करते हैं कि आपके कोड का परीक्षण नहीं किया गया है? अपनी प्रतिभा पर अधिक विश्वास रखें। आपका किसी भी तीसरे पक्ष के रूप में अच्छा है।
WeNeedAnswers

10
आपके तर्क में बहुत सारे छेद हैं मुझे यह भी पता नहीं है कि कहां से शुरू करना है। 1) तीसरे पक्ष के उपकरण का उपयोग क्यों करें: समय और ऊर्जा बचाने के लिए। 2) ओपन सोर्स! = कोई ब्रांड नहीं। एक्सप्रेस / कनेक्ट टीमों द्वारा किया जाता है, और उनके काम को एक बड़े समुदाय द्वारा वीटो किया गया है। वे "कुछ बच्चे नहीं हैं।" 3) पहियों को फिर से चालू करने में समय लगता है। हो सकता है कि आपका समय नि: शुल्क हो, ज्यादातर लोगों को नहीं है। 4) आप हर पेंच, बोल्ट और क्लिप को कभी नहीं जान पाएंगे। सभी आधुनिक सॉफ्टवेयर फ्रेमवर्क पर बनाए गए हैं, किसी भी एक व्यक्ति को हर बिट को जानने के लिए बस बहुत कुछ है। मुझे ईमानदारी से विश्वास नहीं है कि आप इन रायों के साथ एक पेशेवर डेवलपर हो सकते हैं।
केयोटिक

6
फ्रेमवर्क "सिल्वर बुलेट" नहीं हैं। जब आप किसी फ़्रेमवर्क के विरुद्ध प्रोग्राम करते हैं, तो आपका कोई और आपके लिए कोड के बारे में बड़े निर्णयों पर नियंत्रण रखने की अनुमति देता है। निश्चित रूप से आप देख सकते हैं? एक बार किए गए इन बड़े फैसलों को फिर से दोहराना बहुत कठिन है, अगर फ्रेमवर्क बहुत अधिक लुभावना है तो यह आपके लिए सभी बड़े निर्णय लेगा। फ्रेमवर्क का उपयोग करना वास्तविक प्रोग्रामिंग को दूर करना भी है। फ्रेमवर्क की अपनी व्याख्या को परिभाषित करें, एक से अधिक प्रकार के फ्रेमवर्क हैं। कुछ फ्रेमवर्क प्रोग्रामिंग भाषा में बहुत एकीकृत हैं तो मैं इन प्रोग्रामिंग सिस्टम को कॉल करूंगा।
WeNeedAnswers

5
मैंने कभी आपका व्यक्तिगत रूप से अपमान नहीं किया, मैंने कहा कि आपके तर्क में छेद था और फिर मैंने उन्हें बाहर कर दिया। आप! = आपका तर्क। जब मैंने कहा कि मैं ईमानदारी से विश्वास नहीं करता हूं कि आप इन रायों के साथ एक पेशेवर डेवलपर हो सकते हैं, मेरा मतलब सामान्य "आप" है, न कि आप विशेष रूप से। चौखटे पर आपकी राय इस तथ्य की अनदेखी करती है कि सभी आधुनिक सॉफ़्टवेयर उनका उपयोग करते हैं। मैं अपनी स्थिति से खड़ा हूं, और यह कहीं नहीं जा रहा है। मैं स्वीकृत उत्तर से सहमत हूं, कि एक्सप्रेस / कनेक्ट का उपयोग करना सही तरीका है। इसलिए एक्सप्रेस का मेरा बचाव।
केयोटिक

13

नोडज मूल http एपीआई प्रदान करता है। http, स्टेटलेस है, और सत्र और सत्र चर के विचार http के शीर्ष पर निर्मित फ्रेमवर्क / प्रोटोकॉल में मौजूद हैं। http://en.wikipedia.org/wiki/Session_%28computer_science%29

Http://geddyjs.org/ या http://expressjs.com/ पर एक नज़र डालें, जो नोड के साथ निर्मित वेब फ्रेमवर्क के उदाहरण हैं जो सत्र प्रदान करते हैं।


थैंक्स, एक्सप्रेस में दिखेगा।
टिम्मी

6

डोनाल्ड का जवाब अच्छा है - एक बार कनेक्ट मिडलवेयर के प्याज पैटर्न में आने के बाद आपको यह निर्णय लेना होगा कि किस प्रकार के सत्र स्टोर का उपयोग करना है। एक्सप्रेस में डिफ़ॉल्ट एक मेमोरीस्टोर है, और उत्पादन के उपयोग के लिए अभिप्रेत नहीं है। यहाँ आपके कुछ विकल्प हैं:

Mongo https://github.com/mikkel/express-session-mongo - विकल्प का उपयोग करना सुनिश्चित करें 'native_parser: false'

Redis https://github.com/visionmedia/connect-redis - बहुत अच्छा है, लेकिन अगर आप पहले से ही पब / उप या भंडारण के लिए रेडिस का उपयोग नहीं कर रहे हैं, तो यह आदर्श नहीं हो सकता है।

ध्यान दें, अन्य विकल्प हैं - यह आपकी परियोजना पर निर्भर करता है। किसी ऐसी चीज की तलाश करें जिसे आप अपनी मौजूदा प्रौद्योगिकी स्टैक का लाभ उठा सकते हैं।


3
मैं "डिफ़ॉल्ट एक एक्सप्रेस में एक MemorySrote है, और उत्पादन के उपयोग के लिए इरादा नहीं है" पर ध्यान केंद्रित करना चाहता हूं। पर जाएं engineering.linkedin.com/nodejs/... और बिंदु को पढ़ 7.
guiomie

4
यह दिलचस्प है, इसलिए यदि आप सत्रों को बनाए रखने के द्वारा उपयोगकर्ता अनुमतियों का प्रबंधन कैसे करेंगे?
कोस्टा

2

यदि आप Node.js का उपयोग करके गंभीर वेब विकास की तलाश कर रहे हैं, तो एक्सप्रेस फ्रेमवर्क का उपयोग करें ; यह सत्रों का समर्थन करता है।

एक्सप्रेस विकल्प के साथ एक्सप्रेस परियोजना बनाएँ।

$ express --sessions

एक्सप्रेस स्थापित करने के लिए:

$ npm install express -g

अब समर्थित नहीं। काम करने के cookie-sessionलिए आपको अपने साथ जोड़ना होगा package.josn
विक्टर श्रोडर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.