Беше наистина лесно да настроите сесии и да ги използвате в PHP. Но моят уебсайт трябва да работи с WebSockets. Изправен съм пред проблем да настроя сесии в node.js. Мога лесно да изтласквам данни, без да използвам сесии и ще работи добре, но когато се отвори повече от един раздел, се създава нов socket.id и отворените преди това раздели няма да функционират правилно. Така че работих върху сесии и имах проблем с достъпа до магазина за сесии, сесията му за регистриране не беше хваната. Опитах и с session.load, но без успех
Как да получа обект на сесия и да го използвам по начин, по който отварянето на други раздели да не повлияе на функционалността и да изтласква данни от сървър към клиент на всички раздели?
var express=require('express');
var http = require('http');
var io = require('socket.io');
var cookie = require("cookie");
var connect = require("connect"),
MemoryStore = express.session.MemoryStore,
sessionStore = new MemoryStore();
var app = express();
app.configure(function () {
app.use(express.cookieParser());
app.use(express.session({store: sessionStore
, secret: 'secret'
, key: 'express.sid'}));
app.use(function (req, res) {
res.end('<h2>Hello, your session id is ' + req.sessionID + '</h2>');
});
});
server = http.createServer(app);
server.listen(3000);
sio = io.listen(server);
var Session = require('connect').middleware.session.Session;
sio.set('authorization', function (data, accept) {
// check if there's a cookie header
if (data.headers.cookie) {
// if there is, parse the cookie
data.cookie = connect.utils.parseSignedCookies(cookie.parse(data.headers.cookie),'secret');
// note that you will need to use the same key to grad the
// session id, as you specified in the Express setup.
data.sessionID = data.cookie['express.sid'];
sessionStore.get(data.sessionID, function (err, session) {
if (err || !session) {
// if we cannot grab a session, turn down the connection
console.log("session not grabbed");
accept('Error', false);
} else {
// save the session data and accept the connection
console.log("session grabbed");
data.session = session;
accept(null, true);
}
});
} else {
// if there isn't, turn down the connection with a message
// and leave the function.
return accept('No cookie transmitted.', false);
}
// accept the incoming connection
accept(null, true);
});
sio.sockets.on('connection', function (socket) {
console.log('A socket with sessionID ' + socket.handshake.sessionID
+ ' connected!');
});
err
има ли нещо? Или!session
ви казва, че няма сесия? - person hexacyanide   schedule 16.12.2013session
иerr
саundefined
. НоsessionStore
има данни за всички потребителски сесии - person mrsrinivas   schedule 16.12.2013