Поддержка сессий в Now.js

Цитаты Now.js:

Просто передайте http-сервер connect или express в nowjs.initialize, и файл 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 ответа

Решение

Я столкнулся с этой проблемой и оказалось, что это происходит, потому что я инициализировал NowJS перед настройкой 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

Следует отметить, что сеанс не устанавливается до тех пор, пока к серверу не будет сделан запрос, поэтому, если сервер будет перезагружен, сокет клиента будет повторно подключен, но сеанс будет неопределенным, пока браузер не выполнит обновление страницы.

Мне удалось найти решение (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 напрямую?

Другие вопросы по тегам