2

セッションでいくつかのデータを保持したいと思います。MongoDB をセッション ストアとして使用しています。

これを行うために、簡単なコードを用意しました。しかし、それはうまくいきません。このエラーが発生しました:

タイプ エラー: 未定義のプロパティ 'myVariable' を設定できません

そして、これは私のコードです:

var express = require('express');
var app = require('express')();
var http = require('http')
var server = require('http').Server(app);
var io = require('socket.io')(server);
var get_ip = require('ipware')().get_ip;
var Sequelize = require('sequelize');
var url = require("url");
var crypto = require('crypto');
var cookieParser = require('cookie-parser');
var Session      = require('express-session');
var MongoStore  = require('connect-mongo')(Session);
var mongoose = require('mongoose');
var url =require('url');



app.use(cookieParser());

app.use(Session({
    cookie: { maxAge: 1000*60*2 } ,
    secret: "session secret" ,
    resave: true,
    saveUninitialized: true,
    store:new MongoStore({
        db: 'linchat'
    })
}));



server.listen(3000);

io.on('connection', function (socket) {

    socket.on('join', function(href, referer){
        socket.request.session.myVariable = 'my session variable value';
        console.log('save on to session');
    })


});

私は何を間違っていますか?私は使用します:「エクスプレス」:「4.12.3」、「socket.io」:「1.3.5」

EDIT Express-socket.io-session パッケージも使用してみます:

var express = require('express');
var app = require('express')();
var http = require('http')
var server = require('http').Server(app);
var io = require('socket.io')(server);
var get_ip = require('ipware')().get_ip;
var Sequelize = require('sequelize');
var url = require("url");
var crypto = require('crypto');
var cookieParser = require('cookie-parser');
var Session      = require('express-session');
var MongoStore  = require('connect-mongo')(Session);
var mongoose = require('mongoose');
var url =require('url');


app.use(cookieParser());


var session = require("express-session")({
    secret: "my-secret",
    resave: true,
    saveUninitialized: true,
    store:new MongoStore({
        db: 'linchat'
    })
});
app.use(session);
io.use(require("express-socket.io-session")(session));

server.listen(3000);

io.on('connection', function (socket) {
    socket.on('join', function(href, referer){
        if(socket.handshake.session.views){
            socket.handshake.session.views +=1;
        } else {
            socket.handshake.session.views =1;
        }
        console.log(socket.handshake.session.views);
    })


});

しかし、私 console.log() は常に「1」を返します

4

0 に答える 0