- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我对 session 有很大的疑问。
我致力于围绕“Redis”nodejs 创建一个应用程序,使用不同的库作为 express。
但是突然之间 session 不再有效。我不明白为什么。所以我重新格式化了我的服务器并正确地重新安装。(我使用的是 Debian 6)
而且基本测试仍然不起作用:(.
这是测试:
var express = require('express');
var app = express.createServer();
var RedisStore = require('connect-redis')(express);
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({ secret: "keyboard cat", store: new RedisStore }));
app.get('/', function(req, res){
var sess = req.session;
req.session.visitCount = req.session.visitCount ? req.session.visitCount + 1 : 1;
if (sess.views) {
res.setHeader('Content-Type', 'text/html');
res.write('<p>views: ' + sess.views + '</p>');
res.write('<p>expires in: ' + (sess.cookie.maxAge / 1000) + 's<p/>');
res.write('<p>You have visited this page ' + req.session.visitCount + ' times</p>');
res.end();
sess.views++;
} else {
sess.views = 1;
res.end('welcome to the session demo. refresh!');
}
});
app.listen(4000);
程序运行正确(没有错误)。但是当我使用“sess.views”时永远无效
所以我总是看到:欢迎来到 session 演示。刷新!
我有点绝望。
预先感谢您的帮助
最佳答案
我相信 sess.views++
需要在 res.end()
之前调用,就像 TJ's example
var express = require('express');
var app = express.createServer();
var RedisStore = require('connect-redis')(express);
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({ secret: "keyboard cat", store: new RedisStore }));
app.get('/', function(req, res){
var sess = req.session;
req.session.visitCount = req.session.visitCount ? req.session.visitCount + 1 : 1;
if (sess.views) {
res.setHeader('Content-Type', 'text/html');
res.write('<p>views: ' + sess.views + '</p>');
res.write('<p>expires in: ' + (sess.cookie.maxAge / 1000) + 's<p/>');
res.write('<p>You have visited this page ' + req.session.visitCount + ' times</p>');
sess.views++;
res.end();
} else {
sess.views = 1;
res.end('welcome to the session demo. refresh!');
}
});
app.listen(4000, '127.0.0.1');
alfred@alfred-laptop:~/database/redis-2.2.0-rc4/src$ npm ls
/home/alfred
├── connect-redis@1.0.6
├─┬ everyauth@0.2.15
│ ├─┬ connect@1.5.2
│ │ ├── connect-redis@1.0.6 extraneous
│ │ ├── mime@1.2.2
│ │ └── qs@0.2.0
│ ├── oauth@0.9.2
│ ├── openid@0.1.8
│ ├── restler@0.2.1
│ └─┬ xml2js@0.1.9
│ └── sax@0.1.4
├─┬ express@2.4.1
│ ├─┬ connect@1.5.2
│ │ ├── connect-redis@1.0.6 extraneous
│ │ ├── mime@1.2.2
│ │ └── qs@0.2.0
│ ├── mime@1.2.2
│ └── qs@0.2.0
├── hiredis@0.1.12
├── jade@0.12.4
├── node-expat@1.3.2
├── node-stringprep@0.0.5
├─┬ node-xmpp@0.2.9
│ └── ltx@0.0.5
├── nodeunit@0.5.1
├── notifo@0.0.2
├── openid@0.2.0
├─┬ optimist@0.2.5
│ └── wordwrap@0.0.1
├── recaptcha@1.1.0
├── redis@0.6.6
└─┬ socket.io@0.7.6
├── policyfile@0.0.3
├── redis@0.6.0
└── socket.io-client@0.7.3
alfred@alfred-laptop:~/database/redis-2.2.0-rc4/src$ npm -v
1.0.15
alfred@alfred-laptop:~/database/redis-2.2.0-rc4/src$ node -v
v0.4.9
alfred@alfred-laptop:~/database/redis-2.2.0-rc4/src$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.10
DISTRIB_CODENAME=maverick
DISTRIB_DESCRIPTION="Ubuntu 10.10"
alfred@alfred-laptop:~/node/stackoverflow/6700472$ curl -c cookie http://localhost:4000/
welcome to the session demo. refresh!alfred@alfred-laptop:~/node/stackoverflow/6700472$ curl -b cookie http://localhost:4000/
<p>views: 1</p><p>expires in: 14396.223s<p/><p>You have visited this page 2 times</p>alfred@alfred-laptop:~/node/stackoverflow/6700472$ curl -b cookie http://localhost:4000/
<p>views: 2</p><p>expires in: 14399.221s<p/><p>You have visited this page 3 times</p>alfred@alfred-laptop:~/node/stackoverflow/6700472$
工作得很好!
关于 session 突然不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6700472/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!