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

Цитаты Now.js:

Просто передайте HTTP-сервер connect или express в nowjs.initialize, и this.user.session должен быть доступен.

So:

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 
}

Есть идеи, почему сессия не определена?


person Patrick    schedule 30.01.2012    source источник
comment
Вы забыли использовать промежуточное ПО для сеанса :)   -  person Raynos    schedule 30.01.2012
comment
Я обнаружил поддержку сеанса now.js со стороны ianserli с промежуточным программным обеспечением, но я говорю о нативной поддержке сеанса из Now.js 0.8.0. Все еще не знаю, как заставить это работать.   -  person Patrick    schedule 07.02.2012


Ответы (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

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

person jschr    schedule 05.03.2012
comment
Я все еще не могу заставить это работать. У кого-нибудь есть рабочий пример, на который я могу посмотреть? Вынужден использовать вместо этого метод sessionStore.get. Не работает ли использование MemoryStore? - person cdeutsch; 11.05.2012

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

person Patrick    schedule 07.02.2012