Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 快速-会话不';无法在后续SSE请求之间保存_Javascript_Node.js_Session_Express_Server Sent Events - Fatal编程技术网

Javascript 快速-会话不';无法在后续SSE请求之间保存

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

我正在使用Node.js和Express探索服务器发送的事件。 我设法设置了流的请求处理和写入,但现在我正在努力进行会话管理,因为我无法在后续调用之间持久化会话

服务器代码:

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
    ,但是没有效果……不幸的是,这并不能解决问题。无论如何,谢谢!