如何在 NodeJs 中无请求地访问会话数据?
How to access session data without request in NodeJs?
我正在构建一个基于套接字的网络应用程序。用户登录后,我将其数据保存到 session (express-session)
。现在的问题是,当用户打开房间时,socket emit 被调用,并且在服务器端没有请求数据,因为我需要在打开房间之前检查用户 ID。下面是我的代码。
server.js
const session = require('express-session');
app.use(session({
key: 'userid',
secret: 'zxcvasd',
resave: false,
saveUninitialized: false,
cookie: {
expires: 6000000
}
}));
const socketCtrl = require('../controllers/socket.controller');
socket.on('open-broadcast', function (broadcastId) {
socketCtrl.setBroadcastData(broadcastId);
});
socket.controller.js
exports.setBroadcastData = (broadcastId) => {
// here I want session data like below
// const user = req.session.user
};
您可以像这样为快速会话添加中间件
使用 this npm 包
var ios = require('socket.io-express-session');
var io = require("socket.io")(server);
io.use(ios(Session));
var sess = socket.handshake.session;
sess.userId
我正在构建一个基于套接字的网络应用程序。用户登录后,我将其数据保存到 session (express-session)
。现在的问题是,当用户打开房间时,socket emit 被调用,并且在服务器端没有请求数据,因为我需要在打开房间之前检查用户 ID。下面是我的代码。
server.js
const session = require('express-session');
app.use(session({
key: 'userid',
secret: 'zxcvasd',
resave: false,
saveUninitialized: false,
cookie: {
expires: 6000000
}
}));
const socketCtrl = require('../controllers/socket.controller');
socket.on('open-broadcast', function (broadcastId) {
socketCtrl.setBroadcastData(broadcastId);
});
socket.controller.js
exports.setBroadcastData = (broadcastId) => {
// here I want session data like below
// const user = req.session.user
};
您可以像这样为快速会话添加中间件 使用 this npm 包
var ios = require('socket.io-express-session');
var io = require("socket.io")(server);
io.use(ios(Session));
var sess = socket.handshake.session;
sess.userId