जारी नहीं है मैं एक चैट एप्लिकेशन में Socket.io
का उपयोग कर रहा हूं। मैं सत्र स्थापित करने की कोशिश कर रहा हूं ताकि मैं सत्रों के बीच उपयोगकर्ताओं के लॉगिन को जारी रख सकूं।सॉकेट आईओ केवल सत्र
यहाँ प्रासंगिक कोड है:
index.js (सर्वर)
var cookieParser = require('cookie-parser')();
var session = require('cookie-session')({ secret: 'secret' });
app.use(cookieParser);
app.use(session);
io.use(function(socket, next) {
var req = socket.handshake;
var res = {};
cookieParser(req, res, function(err) {
if (err) return next(err);
session(req, res, next);
});
});
io.on('connection', function(socket){
socket.on('test 1', function(){
socket.handshake.test = 'banana';
});
socket.on('test 2', function(){
console.log(socket.handshake.test);
});
});
chat.js (ग्राहक)
var socket = io();
socket.emit('test 1');
socket.emit('test 2');
कोड काम करता है ऊपर, यह अपेक्षित कंसोल पर banana
प्रिंट करें। हालांकि, अगर मैं बाहर 'परीक्षण 1' तो जैसे टिप्पणी:
var socket = io();
// socket.emit('test 1');
socket.emit('test 2');
यह कंसोल के लिए undefined
प्रिंट होगा।
क्या यह अभी भी banana
प्रिंट करने में सक्षम नहीं होना चाहिए, क्योंकि यह सत्र का उपयोग कर रहा है और यह अनुरोधों के बीच जारी है? अगर मैं उस आदेश को उलटा करता हूं जिसमें मैं 'टेस्ट 1' और 'टेस्ट 2' कहता हूं तो मैं भी उसी मुद्दे पर चलता हूं।
मैं क्या गलत कर रहा हूं? उम्मीद के मुताबिक सत्र के लिए मुझे क्या याद आ रही है?
'socket.handshake.session.test = 'केला' का उपयोग करता है;' परीक्षण 1' और 'socket.handshake के लिए'। 'test 2' काम के लिए session.test'? –