5次元のカオス

南の島の学生がつらつらと日々を書き連ねます

mongoDBに保存したセッション情報をsocket.ioから取得する

mongoDBに保存したセッション情報をsocket.ioから取得する

node.jsのフレームワークであるexpressのセッション情報は、

デフォルトではメモリに直接保存されるのですが、 それがあまりよろしくない (メモリリークなどの原因となる)

とのことなので、使ったことのある monogoDBをメモリーストアに設定してみました.

以下、自分の環境です.

express   : 3.0.0rc2
socket.io : 0.9.9
mongoDB : 2.4.3

mongoDBをメモリーストアに設定した後に、Socket.io側からアクセスしたくて

色々調べたのですがよく分からなかったので、やっつけで実装してみたのが下のコードです.

(mongooseを使ったのは甘えです)

なにか変な実装になってしまった感はあります...

色々な人のブログを回るとparseCookieメソッドを使ってhandshakeからsessionの情報を取り出しているようなのですが、

var parseCookie = require('connect').utils.parseCookie

自分の環境だと parseCookie = undefined とでてしまいましたので. (違うmoduleなのかな?

ですので、その部分を自分で書き直したあとに、mongooseを使ってmongoDBから直接session情報を

取り出すということをしています.

とりあえず、自分で書いたやつでもセッション情報をとってくることができたのはちょっと嬉しかった.

Redisでnode.jsのメモリーストアを代替している人が多い印象があったので、近いうちにmongoDBから乗り換えるかもしれないですが、

もっと良い書き方や、そもそもこれが違う!ということあれば教えて頂けるととても嬉しいです ><

2013.12.15 追記

まとめて一つのクラスにしてみた.

SocketServerMongoMemoryStore.coffee を書きなおして一つのクラスに ...

参考