1
私はhttps://www.npmjs.com/package/express-socket.io-sessionを使用して、socket.ioとexpressのセッションを同期しています。
しかし、私はsocket.io(例えば)を使ってセッションを設定すると、エクスプレスでアクセスすることはできません:undefined
にreq.session.foo
があります。
どうすれば解決できますか?どうしたの?ここ
です:app.js
の私のコード:NodeJS、ソケットIOセッション、エクスプレスセッション
// Requires
global.config = require("./config.js");
var express = require("express");
var session = require("express-session");
global.sha1 = require("sha1");
global.moment = require("moment");
var rhandler = require("./handler.js");
global.mySQL = require("./mysql.js");
var entities = new require("html-entities").XmlEntities;
global.Users = {};
var app = express();
var server = require("http").createServer(app).listen(config.server.port);
global.Handler = new rhandler();
app.set("view engine", "ejs");
app.use("/assets", express.static("public"));
var socketIO = require("socket.io");
var io = socketIO.listen(server);
var session = require("express-session")({
secret: config.express.secret,
resave: true,
saveUninitialized: true
});
var sharedsession = require("express-socket.io-session");
// Use express-session middleware for express
app.use(session);
// Use shared session middleware for socket.io
// setting autoSave:true
io.use(sharedsession(session, {
autoSave:true
}));
io.sockets.on("connection", function(socket) {
socket.on("login", function(obj, callback) {
socket.handshake.session.test = "test";
});
});
app.get("/", function(req, res) {
console.log(req.session.test);
res.end();
});
docによると、 'socket.handshake.foo'ではなく、' socket.handshake.session.foo'にアクセスしているはずです。 – jfriend00
本当に、私は私の話題の中で泣き叫んだ。しかしこれと同じ問題 –
これを試したとき、変更を保持するために 'session.save()'が必要でした。 – jfriend00