मैं नोड.जे.एस. के आधार पर चैट एप्लिकेशन बनाने की कोशिश कर रहा हूं। मैं ExpressJS सत्र प्रणाली का उपयोग करने के लिए websocket सर्वर (ws लाइब्रेरी) को मजबूर करना चाहता हूं। दुर्भाग्य से, मैं अटक गया है। मेमोरीस्टोर हैश का उपयोग सत्रों के डेटा को कुकीज में सत्र आईडी से अलग होता है। क्या कोई मुझे समझा सकता है कि मैं क्या गलत कर रहा हूं?एक्सप्रेसजेएस और वेबसाइट्स और सत्र साझाकरण
WebSocket सर्वर कोड हिस्सा:
module.exports = function(server, clients, express, store) {
server.on('connection', function(websocket) {
var username;
function broadcast(msg, from) {...}
function handleMessage(msg) {...}
express.cookieParser()(websocket.upgradeReq, null, function(err) {
var sessionID = websocket.upgradeReq.cookies['sid'];
//I see same value in Firebug
console.log(sessionID);
//Shows all hashes in store
//They're shorter than sessionID! Why?
for(var i in store.sessions)
console.log(i);
store.get(sessionID, function(err, session) {
websocket.on('message', handleMessage);
//other code - won't be executed until sessionID in store
websocket.on('close', function() {...});
});
});
});
}
दुकान वस्तु परिभाषा:
var store = new express.session.MemoryStore({
reapInterval: 60000 * 10
});
एप्लिकेशन विन्यास:
app.configure(function() {
app.use(express.static(app.get("staticPath")));
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({
store: store,
secret: "dO_ob",
key: "sid"
}));
});
मुख्य कोड का एक हिस्सा:
var app = express();
var httpServer = http.createServer(app);
var websocketServer = new websocket.Server({server: httpServer});
httpServer.listen(80);
नमूना डिबगिंग आउटपुट:
- websocket.upgradeReq.headers.cookie "sid=s%3A64a%2F6DZ4Mab8H5Q9MTKujmcw.U8PJJIR%2BOgONY57mZ1KtSPx6XSfcn%2FQPZ%2FfkGwELkmM"
- websocket.upgradeReq.cookies["sid"] "s:64a/6DZ4Mab8H5Q9MTKujmcw.U8PJJIR+OgONY57mZ1KtSPx6XSfcn/QPZ/fkGwELkmM"
- i "64a/6DZ4Mab8H5Q9MTKujmcw"
सरल, बदसूरत वैकल्पिक हल में मदद करता है: sessionID = sessionID.match (/ [a-zA-Z0-9/+] \ ./) [0]। टुकड़ा (1, -1), लेकिन मैं इस मुद्दे को हल करना चाहता हूं। – skorczan
कामकाज के लिए धन्यवाद, मेरी मदद की :) क्या आपको कभी इसका उचित समाधान मिला? – Tim