Session support in Now.js

1.2k views Asked by At

Now.js quotes:

Simply pass a connect or express http server in nowjs.initialize and this.user.session should be available.

So:

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

The output of this.user is:

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

Any idea why session is undefined?

2

There are 2 answers

1
jschr On BEST ANSWER

I ran into this problem and turns out it was happening because I was initializing NowJS before configuring express.

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

One thing to note is that session is not set until a request is made to the server so if the server is reset, the client socket will reconnect but session will be undefined until the browser does a page refresh.

0
Patrick On

I managed to find a solution (CoffeeScript), for every "everyone"-request:

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

Any way to get to this.user.session directly?