セッションにエクスプレスミドルウェアを使用しようとしています(理解していませんが、非常に近いと感じています)。
私が尋ねた理由は、エクスプレスドキュメント(http://expressjs.com/api.html#middleware)がそれを express.cookieSession と呼んでいるからです。エクスプレスセッション。今はよくわかりません。役に立つ可能性のあるコードの大きな塊があるだけです??? しかし、私が見るすべての例は異なります...どのように機能しますか?
var express = require('express')
, http = require('http');
, app = express();
store = new express.session.MemoryStore;
app.use(express.cookieParser());
//app.use(express.cookieSession());
app.use(express.session({secret:'whateverman',key:'express.sid',store:store}));
app.use(app.router);
app.all('/*',function(req,res,next){res.header("Access-Control-Allow-Origin","*");res.header("Access-Control-Allow-Headers","X-Requested-With");next();});
var server = http.createServer(app);
server.listen(8000);
var io = require('socket.io').listen(server);
io.sockets.on('connection',function(socket){
socket.on('reglogin',function(_){_.session.e='some@email.com';});
});
socket.on('reglogin' は以下を生成します:
TypeError: 未定義のプロパティ 'e' を設定できません
//-------------------------------------質問の更新
Express が Connect に依存しているが、Express が Connects ミドルウェアに独自のものであるかのようにアクセスできる場合:
app.use(express.cookieSession()); //app is express
app.use(connect.cookieSession()); //does exactly the same
確かに同じロジックが、express に依存する socket.io に適用されます。
io.use(connect.CookieSession()); //io is socket.io
私はここで間違っていますか?Socket.io には同じ .use メソッドがありますか? 更新:(答えは io.use にはありません)
io.interoperate(app.use(express.cookieSession())); 笑
- - - - - - - - - - - - - - アップデート - - - - - - - - - - - ------------ セッションを機能させ、Cookie なしのハンドシェイクで毎回ファイルするために、絶望的な試みで次の npm モジュール ガイドラインに従いました。
express.io session.socket.io session.io + セッションストア
現在、コンソールログで後者を使用しています:
warn - handshake error Could not find cookie with key: connect.sid