Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用express 4和socket.io在node.js中进行会话_Javascript_Node.js_Session_Socket.io 1.0_Express Session - Fatal编程技术网

Javascript 使用express 4和socket.io在node.js中进行会话

Javascript 使用express 4和socket.io在node.js中进行会话,javascript,node.js,session,socket.io-1.0,express-session,Javascript,Node.js,Session,Socket.io 1.0,Express Session,我想在会话中保留一些数据。我使用MongoDB作为会话存储 我编写了简单的代码,可以做到这一点。但它不起作用。我得到了这个错误: 类型错误:无法设置未定义的属性“myVariable” 这是我的代码: var express = require('express'); var app = require('express')(); var http = require('http') var server = require('http').Server(app); var io = requi

我想在会话中保留一些数据。我使用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”

编辑 我还尝试使用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);
    })


});

但是I console.log()总是返回“1”

您遇到过这个模块吗?你能看看我的更新吗?join事件实际发生了多少次?在body文档加载时,我发出join。我刷新了很多次页面,每次从另一个浏览器打开同一个链接时,我的输出都是1。