node.jsexpressnode.js-connectnowjs-sockets

Session support in Now.js


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?


Solution

  • 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.