Now.js中的会话支持

时间:2012-01-30 16:04:40

标签: node.js express connect nowjs-sockets

Now.js引用:

  

只需在nowjs.initialize中传递一个连接或表达http服务器,并且this.user.session应该可用。

所以:

express = require 'express'
app = module.exports = express.createServer()
connect = require 'connect'
nowjs = require 'now'
everyone = nowjs.initialize(app)

this.user的输出是:

{ 
  clientId: '353725111301231610',
  cookie: { 'connect.sid': 's0meC00k1e1nF0rm4ti0n' },
  session: undefined 
}

知道会话未定义的原因吗?

2 个答案:

答案 0 :(得分:4)

我遇到了这个问题并且结果发生了,因为我在配置express之前初始化了NowJS。

app.configure(function(){
    ...

    app.use(express.cookieParser());
    app.use(express.session({ secret: "my_key", store: redisStore }));
    app.use(app.router);
});

var everyone = nowjs.initialize(app); //must be defined after app.configure

需要注意的一点是,在向服务器发出请求之前不会设置会话,因此如果重置服务器,则客户端套接字将重新连接,但会话将不确定,直到浏览器执行页面刷新。

答案 1 :(得分:0)

我设法找到一个解决方案(CoffeeScript),为每个“每个人” - 请求:

self = this
sid = decodeURIComponent(this.user.cookie['connect.sid'])
sessionStore.get sid, (err, session) ->
    self.user.session = session
    <<more code here>>

有没有办法直接访问this.user.session?