Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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
Node.js 如何在会话expressjs中存储套接字对象_Node.js_Express_Socket.io - Fatal编程技术网

Node.js 如何在会话expressjs中存储套接字对象

Node.js 如何在会话expressjs中存储套接字对象,node.js,express,socket.io,Node.js,Express,Socket.io,我想在用户会话中存储套接字对象。但由于回调中的req对象未持久化更改,因此无法执行。下次我尝试访问它时,它不可用。我该怎么做呢?试试这个: io.on('connect', function (socket) { req.session.socket = socket; }); yourSessionMiddleware看起来像: io.use(function(socket, next) { yourSessionMiddleware(socket.request, s

我想在用户会话中存储套接字对象。但由于回调中的req对象未持久化更改,因此无法执行。下次我尝试访问它时,它不可用。我该怎么做呢?

试试这个:

io.on('connect', function (socket) {
    req.session.socket = socket;    
});
yourSessionMiddleware看起来像:

io.use(function(socket, next) {
   yourSessionMiddleware(socket.request, socket.request.res, next);
});

io.on('connect', function (socket) {
    socket.request.session.socket = socket;    
});

请求对象上缺少会话对象。@AnilDukkipatty我的错误,更改了答案。当我包括您提到的midleware函数时,套接字对象事件没有触发“io.on(…)”@AnilDukkipatty会话中间件,该中间件与app.use(yourSessionMiddleware)string一起安装。我使用的是
var session=require('express-session');
app.use(session({secret:'somesecret',store:sessionstore.createSessionStore()}))
io.use(函数(socket,next){session(socket.request,socket.request.res,next);})
var yourSessionMiddleware = session({
    secret: "super secret word"
});