簡體   English   中英

如何將 socket.io 與來自 controller 的快速會話一起使用

[英]How to use socket.io with express-session that coming from controller

在我的 app.js 中,我在中間件中使用路由,如下所示:

app.use('/myPage', pageRoute);

我的路線頁面:

router.get('/new', pageController.pageFunc);

和我的 controller:

exports.pageFunc = (req, res, next) => {
    res.render('myPage/pugFile', {
        name: req.session.userName
    });
}

它工作得很好,但我想在我的 app.js 中將這個 session 與我的套接字一起使用,我的套接字是這樣的:

io.on('connection', socket => {
  socket.on('myIo', (par) => {
    console.log(par);
  });
});

如果我嘗試在我的套接字中使用 req.session.userName 我接受 req is not defined 錯誤。 我如何在這個套接字中使用我的會話?

我用這樣的中間件解決了我的問題:

app.use('/myPage', pageRoute);

let mySession;

app.use((req,res,next)=>{
mySession = req.session.userName;
next();
});

io.on('connection', socket => {
  socket.on('myIo', () => {
    console.log(mySession );
  });
});

編輯:此解決方案存在一些問題,因為 mySession 值隨其他用戶連接而變化,但最終我找到了解決方案。

您可以使用 socket.request.session 他們解釋了如何在那里使用:使用 express-session

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM