私は現在、このスタックexpres、socket.io、sessionstoreを使用しています。私はここの記事http://www.danielbaulig.de/socket-ioexpress/に従った。 問題は、socket.ioコールバックのセッション値を変更できないことです。socket.ioコールバックの中からセッションデータを変更する
エクスプレスサイドからのアクセスがうまくいくと、リフレッシュするたびにアイテムが増えます。
app.get('/mysession', function(req, res) {
req.session.item++;
console.log(req.session);
res.render('session.jade', {
title: 'Sample title'
});
});
socket.io側で使用すると問題が発生する可能性があります。間違ったオブジェクトを設定している可能性があります。
var io = io.listen(app);
io.sockets.on('connection', function(socket) {
var handshake = socket.handshake;
onlineCount++;
console.log('Well done id %s', handshake.sessionID);
handshake.session.item++;
console.log(handshake.session);
});
ここにブリッジコードがあります。
io.set('authorization', function(data, accept) {
if (data.headers.cookie) {
data.cookie = parseCookie(data.headers.cookie);
data.sessionID = data.cookie['express.sid'];
sessionStore.get(data.sessionID, function(err, session) {
if (err || !session) {
accept('Error', false);
} else {
data.session = session;
accept(null, true);
}
});
} else {
return accept('No cookie tansmitted', false);
}
});