2016-11-26 7 views
5

だから私はこのように書きサーバを設定script.jsを持ってangular2/typecript環境で作業していない:エクスプレス・セッションと表現-socket.io-セッションが

私のtypescriptですで
var io_session = require("express-socket.io-session"); 

var e_session = require("express-session")({ 
    secret: "a-secret", 
    resave: true, 
    saveUninitialized: true 
}); 

(...) 

//this block is the last "io.use" before the socket logic (io.on("connection"))  
io.use(io_session(e_session,{ 
    autoSave: true 
})); 

/次のシードを使用するangular2フロントエンド環境https://github.com/NathanWalker/angular2-seed-advanced Httpクラスを使用して、いくつかのサービス/コンポーネントでhttpリクエストを実行します。

しかし、私が何かのためにサーバーを再度要求しようとすると、ユーザーセッションをログに記録しようとすると、何も記録されません。なぜユーザーのセッションだけでなく、セッションがhttpからソケットレイヤーシステムに共有されていない(明らかに、作成されていなければ、それも共有されていない)。

ここで何が間違っているのか分かりますか?私は必要に応じてより多くの情報を提供することができますが、私は本当に何が欠けているか分かりません...あなたの助けを大変ありがとうございます。

+0

こんにちは、より完全なコードラインや問題の概要など、詳細をあなたの質問に反映してください。それがあなたに合っていればjsfiddleを試してみてください... – bosco

+0

@dscastro angle2の種のコンテキストが既に複雑なので難しいです... – Fane

+0

これは私のために解決しました: https://stackoverflow.com/questions/25532692/どのようにシェアセッションとソケットio-1-x-and-express-4-x –

答えて

5

Expressで簡単にsocket.ioを実行できます。単にsocket.ioのlistenメソッドを呼び出してExpressセッションをミドルウェアとして渡すことで()、すべてのセッションをFileSystemに格納し、Redisではなくではないと仮定します。私はあなたのコードを次のように複製しました:

var e_session = require("express-session"); 
    var io_session = require("socket.io")(server); 
    //Storing sessions in file system 
    var sessionFileStore = require('session-file-store')(Session); 

    //Express-Sessions as middleware 
    var e_sessionMiddleware = e_session({ 
     store: new sessionFileStore({ path: './project-x/sessions' }), 
     secret: 'pass',  resave: true, 
     saveUninitialized: true 
    }); 
    //Use of Express-Session as Middleware  
    io_session.use(function(socket, next) { 
     e_sessionMiddleware(socket.handshake, {}, next); 
    }); 

    //Socket Io session and express sessions are now same 
    io_session.on("connection", function(socket) { 
     socket.emit(socket.handshake.session); 
    }); 

希望します!ありがとうございました!

+0

答えが見つかりませんでした? –

+0

まだ動作しません。私は問題がサーバではなく角度のHTTPオブジェクトにあると思う。私が角度でページをリフレッシュすると、ソケットは保持されません... – Fane

関連する問題