संपादित करें: कुछ मॉड्यूल की कोशिश करने के बाद जो काम नहीं किया, मैं वास्तव में चला गया और ऐसा करने के लिए अपनी खुद की लाइब्रेरी लिखी। बेशर्म प्लग: इसे https://github.com/aviddiviner/Socket.IO-session पर देखें । मैं ऐतिहासिक उद्देश्यों के लिए अपनी पुरानी पोस्ट नीचे छोड़ दूंगा:
मुझे यह काम काफी साफ- सुथरा मिला है, बिना फ्लैशस्कैकेट ट्रांसपोर्ट को प्रोजैक के ऊपर दिए गए समाधान के अनुसार। मैं Socket.IO के साथ एक्सप्रेस का भी उपयोग कर रहा हूं। ऐसे।
सबसे पहले, दृश्य को सत्र आईडी पास करें:
app.get('/', function(req,res){
res.render('index.ejs', {
locals: {
connect_sid: req.sessionID
// ...
}
});
});
फिर आपके विचार में, इसे सॉकेट.आईओ क्लाइंट-साइड के साथ लिंक करें:
<script>
var sid = '<%= connect_sid %>';
var socket = new io.Socket();
socket.connect();
</script>
<input type="button" value="Ping" onclick="socket.send({sid:sid, msg:'ping'});"/>
फिर अपने सर्वर साइड सॉकेट.आईओ श्रोता में, इसे चुनें और सत्र डेटा पढ़ें / लिखें:
var socket = io.listen(app);
socket.on('connection', function(client){
client.on('message', function(message){
session_store.get(message.sid, function(error, session){
session.pings = session.pings + 1 || 1;
client.send("You have made " + session.pings + " pings.");
session_store.set(message.sid, session); // Save the session
});
});
});
मेरे मामले में, लाइब्रेरी session_store
का उपयोग करते हुए , मेरा रेडिस है redis-connect
।
var RedisStore = require('connect-redis');
var session_store = new RedisStore;
// ...
app.use(express.session({ store: session_store }));
आशा है कि यह Google को खोजते समय किसी ऐसे व्यक्ति की मदद करता है (जैसा मैंने किया;)