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

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

1 голос
/ 30 января 2012

Цитаты Now.js:

Просто передайте http или 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 ]

4 голосов
/ 05 марта 2012

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

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

0 голосов
/ 07 февраля 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?

...