पहली समस्या
मैं सत्र, स्टोर, प्राधिकरण और रेडिस को समझने की कोशिश कर रहा हूं। यदि यह महत्वपूर्ण है, तो मैं [email protected]
का उपयोग कर रहा हूं। मैं समझता हूं कि मेरे पास RedisStore()
डालने के लिए दो विकल्प हैं। मैं किस का उपयोग करता हूं? क्या मैं दोनों का उपयोग करता हूँ?node.js में, मैं socket.io और एक्सप्रेस के साथ redis कैसे सेटअप करूं? विशेष रूप से RedisStore()
express.session({secret: 'secret', key: 'key', store: new RedisStore()});
io.set('store', new RedisStore());
मैं पहले से ही node.js
, express
, और socket.io
चल रहा है। तो अब मैं redis
को लागू करने की कोशिश कर रहा हूं लेकिन मुझे नहीं पता कि सत्र/स्टोर का उपयोग करके प्राधिकरण को कैसे कार्यान्वित किया जाए और मुझे नहीं पता कि रेडिस डेटाबेस को कैसे लिखना है। मुझे इस पर कोई दस्तावेज नहीं मिला है। मैं एक साइट है कि सत्र और socket.io and express का उपयोग कर स्टोर लेकिन कोई redis, और एक और एक है कि सत्र और दुकानों using all three बारे में बात करती बारे में बात करती मिला, लेकिन यह io.set('store', ...)
उपयोग नहीं करता।
मुझे यह भी नहीं पता कि मुझे दो अलग-अलग स्टोरों का उपयोग करना चाहिए, एक express
और socket.io
के लिए, या यदि मुझे केवल एक का उपयोग करना चाहिए। स्पष्टीकरण के लिए उदाहरण को देखो:
//Redis Variables
var redis = require('socket.io/node_modules/redis');
var RedisStore = require('socket.io/lib/stores/redis');
var pub = redis.createClient();
var sub = redis.createClient();
var client = redis.createClient();
var redis_store = new RedisStore({
redisPub: pub,
redisSub: sub,
redisClient: client
});
app.configure(function(){
//...code goes here...
app.use(express.session({
secret: 'secret',
key: 'key',
store: redis_store //Notice I'm using redis_store
}));
//...more code...
});
io.configure(function(){
io.set('store', redis_store); //Notice it's the same RedisStore() being used
});
मैं प्रत्येक के लिए एक ही RedisStore()
उपयोग करते हैं? क्या मैं प्रत्येक के लिए अलग-अलग बना देता हूं? क्या मैं बस express
या socket.io
का उपयोग करता हूं? जो मैं वास्तव में चाहता हूं वह ग्राहकों को प्रमाणीकृत करने में सक्षम होना है (मुझे लगता है कि सत्रों के माध्यम से किया जाता है) और जब वे कनेक्ट होते हैं तो उन्हें रेडिस डेटाबेस अपडेट करते हैं - जब लोग मेरी साइट तक पहुंचते हैं तो लॉग इन करते हैं। जो मेरी दूसरी समस्या की ओर जाता है।
दूसरी समस्या
तो मुझे पता नहीं पहुँच सकते हैं और इस बिंदु से redis डेटाबेस संपादित करने का तरीका है। मैं अपनी पहली समस्या के कारण यह परीक्षण करने के लिए नहीं कर पाए हैं लेकिन मुझे लगता है यह कुछ इस तरह होगा:
io.sockets.on('connection', function(socket){
var session = socket.handshake.session;
redis.put(session);
});
मैं भी कैसे नोड के भीतर से एक redis डेटाबेस अद्यतन करने पर किसी भी प्रलेखन नहीं देखा है। जेएस तो मैं अत्यधिक संदेह कि redis.put()
सही शब्दावली हैहा। मैंने redis's website का दौरा किया है लेकिन मुझे node.js. के लिए कमांड नहीं मिल रहे हैं। कमांड लाइन से नियमित रेडिस का उपयोग करने के लिए बस आदेश। वैसे भी, अगर कोई मुझे कम से कम सही दिशा में इंगित कर सकता है तो यह बहुत अच्छा होगा। धन्यवाद। :)
एक नोट: यदि आप अपने रेडिस स्टोर पर पासवर्ड का उपयोग कर समाप्त करते हैं, तो आपको अपने रेडिसस्टोर कन्स्ट्रक्टर के हिस्से के रूप में रेडिस मॉड्यूल को 'रेडिस' कुंजी के नीचे पारित करने की आवश्यकता होगी। अधिक जानकारी के लिए, देखें: http://stackoverflow.com/questions/13438613/redis-auth-error-with-node-js-and-socket-io – Konklone