socket.io 中的 socket.request.session 无法获取连接成功之后设置的 session
socket.io 先合界面连接成功了,然后登录网站,把用户信息放进 session,但是 socket.request.session 中还是原来的值,并没有后面添加的用户信息。这个如何解决。 nodejs 代码如下
const io = require('socket.io').listen('8082', { origins: '*' })
const schedule = require('node-schedule')
io.set('transports', [
'websocket',
'flashsocket',
'htmlfile',
'xhr-polling',
'jsonp-polling',
'polling'
])
io.set('origins', '*:*')
const app = new express()
const sessionStore = new session.MemoryStore({ reapInterval: 3600 * 1000 })
const sessionMiddleware = session({
secret: 'Stefanie Sun',
store: sessionStore,
resave: false, // 强制更新 session
saveUninitialized: true, //
cookie: {
maxAge: 8 * 3600 * 1000, // 过期时 8 小时
secure: false // http 访问时 secure 为 false
},
rolling: true
})
io.use((socket, next) => {
sessionMiddleware(socket.request, socket.request.res, next);
})
app.use(sessionMiddleware)
routes(app)
io.on('connection', (socket) => {
const comment_schedule = schedule.scheduleJob('*/10 * * * * *', async () => { /** 10s查询一次是否有新的内容 **/
const COOKIE_STR = socket.request.session
console.log(COOKIE_STR)
})
})
是否必须要登录之后再连接才能获取呢。