1

Now.jsの引用:

nowjs.initializeで接続またはエクスプレスhttpサーバーを渡すだけで、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 
}

セッションが定義されていない理由はありますか?

4

2 に答える 2

4

私はこの問題に遭遇し、Express を構成する前に NowJS を初期化していたために発生していたことが判明しました。

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

注意すべきことの 1 つは、サーバーにリクエストが送信されるまでセッションが設定されないことです。そのため、サーバーがリセットされると、クライアント ソケットは再接続されますが、ブラウザーがページを更新するまでセッションは未定義になります。

于 2012-03-05T05:23:49.580 に答える
0

「全員」のリクエストごとに、解決策(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 に直接アクセスする方法はありますか?

于 2012-02-07T16:59:41.083 に答える