2016-12-19 21 views
1


私はhttps://www.npmjs.com/package/express-socket.io-sessionを使用して、socket.ioとexpressのセッションを同期しています。
しかし、私はsocket.io(例えば)を使ってセッションを設定すると、エクスプレスでアクセスすることはできません:undefinedreq.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(); 
 
});

+0

docによると、 'socket.handshake.foo'ではなく、' socket.handshake.session.foo'にアクセスしているはずです。 – jfriend00

+0

本当に、私は私の話題の中で泣き叫んだ。しかしこれと同じ問題 –

+0

これを試したとき、変更を保持するために 'session.save()'が必要でした。 – jfriend00

答えて

0

文書によっては、socket.handshake.fooではなくsocket.handshake.session.fooにアクセスする必要があります。

セッションの変更を保持するために、セッションを変更した後にsocket.handshake.session.save()を追加する必要があることがわかりました。

関連する問題