Javascript 快速-会话不';无法在后续SSE请求之间保存
我正在使用Node.js和Express探索服务器发送的事件。 我设法设置了流的请求处理和写入,但现在我正在努力进行会话管理,因为我无法在后续调用之间持久化会话 服务器代码:Javascript 快速-会话不';无法在后续SSE请求之间保存,javascript,node.js,session,express,server-sent-events,Javascript,Node.js,Session,Express,Server Sent Events,我正在使用Node.js和Express探索服务器发送的事件。 我设法设置了流的请求处理和写入,但现在我正在努力进行会话管理,因为我无法在后续调用之间持久化会话 服务器代码: var express=require('express'); var cookieParser=require('cookie-parser'); var会话=需要(“快速会话”); var-app=express(); //记录所有请求 应用程序使用(功能(请求、恢复、下一步){ 控制台日志(请求方法、请求路径); n
var express=require('express');
var cookieParser=require('cookie-parser');
var会话=需要(“快速会话”);
var-app=express();
//记录所有请求
应用程序使用(功能(请求、恢复、下一步){
控制台日志(请求方法、请求路径);
next();
});
使用(cookieParser());
应用程序使用(会话)({
秘密:“很难猜到”,
resave:false,
saveUninitialized:true
}));
//提供测试文件
app.get('/',函数(req,res){
res.sendfile(uu dirname+'/sandbox/test.html');
});
app.get('/test/:name',函数(req,res){
控制台日志(请求头);
//会话为空
控制台日志(请求会话)
req.session.name=req.param('name');
//已设置session.name
控制台日志(请求会话);
请求套接字设置超时(无限);
res.type(“文本/事件流”);
console.log(res.\u头)
res.write('retry:3000\n');
res.write('data:Hello,SSE!\n\n');
});
var server=app.listen(8080,函数(){
log('侦听端口8080\n');
});
微型客户端应用程序:
函数sendReq(){
var name=document.getElementById('name')。值;
var es=新事件源('test/'+名称);
es.onopen=函数(){
var ul=document.getElementById('board');
var li=document.createElement('li');
li.textContent='Connected…';
ul.儿童(li);
};
e.onmessage=函数(e){
var ul=document.getElementById('board');
var li=document.createElement('li');
li.textContent=e.data;
ul.儿童(li);
};
返回false;
}
当访问localhost:8080/
并发送我的名字一次时,我可以看到服务器在控制台上记录调用并设置会话数据和cookie
如果我再次发送我的姓名,则会设置会话cookie,但会话为空,因此会再次发送会话cookie
如何在调用之间存储会话数据?resave句柄告诉会话保存cookie值。否则,您必须在每次请求时手动重新设置它们
app.use(session({
secret : 'pretty hard to guess',
resave : true, <-----
saveUninitialized : true
}));
app.use(会话)({
秘密:“很难猜到”,
resave:是的,我已经尝试将resave
更改为true
,但是没有效果……不幸的是,这并不能解决问题。无论如何,谢谢!