问题描述
我使用 Express 4 和会话中间件 cookie-session
。要将会话存储在服务器上,我必须使用 express-session
,但我想将所有 cookie 存储在客户端,所以这是我的选择。
但问题是在 Socket IO 内使用会话。有很多关于 express-session
的教程,但只有几个关于 StackOverflow 的建议,如何在这种情况下使用 cookie-session
。
我知道如何连接 cookie-session
和 Socket IO 的两种方法。第一:
const session = cookieSession({
name: 'session',secret: 'secret'
})
io.use((socket,next) => {
session(socket.request,{},next)
})
现在会话在 socket.request.session
中可用,它在 Express 中看起来像 req.session
。好吧,但我不能修改它。或者更确切地说,我可以,并且对象 socket.request.session
确实发生了变化,但实际上 cookie 并没有发生变化。
第二种方式是使用express-socket.io-session
:
const sharedsession = require('express-socket.io-session')
const session = cookieSession({
name: 'session',secret: 'secret'
})
io.use(sharedsession(session),{
autoSave: true
})
现在会话在 socket.handshake.session
中可用。但即使有 autoSave
标志,真正的 cookie 也不会改变。是否有某种方法可以使用 cookie-session
访问 Socket IO 中的会话并能够对其进行修改?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)