socket.ioのnamespaceとsession

のどが痛い(つд⊂)エーン
寒さと乾燥のダブルパンチで、やられたみたいです。

さて、以前expressのsocket.ioとrevelのセッションを共有したエントリーをしたんですけど、
http://d.hatena.ne.jp/factory-g/20150812#1439368107
socket.io側をnamespaceで区切ると上手くいかない。
ちょっと端折って書くとこんな感じ

  io.use(function(socket, next){
    console.log("socket.io側のセッションチェック");
    // クッキーからセッション ID を取得する
    var cookie = require('cookie').parse(socket.request.headers.cookie);
      ・
      ・
      ・
 });
  var chat = io.of('/chat').on('connection', function(socket){
    var session = socket.session;  // undefinedになる

いろいろ調べても、ずぱりそのものってエントリーがない。
あきらめて、socket.io.sessionを導入しようかと思ってソースサンプルを眺めていると、なんとなくこうんんじゃね?みたいな思いつきがあったので試して見た。上手くいった。

  var chat = io.of('/chat').on('connection', function(socket){
    var session = socket.session;  // セッションが取得できる
      ・
      ・
      ・
 });

  chat.use(function(socket, next){
    console.log("socket.io側のセッションチェック");
    // クッキーからセッション ID を取得する
    var cookie = require('cookie').parse(socket.request.headers.cookie);
      ・
      ・
      ・
 });

どうも、namespace毎にセッションは取得しなければならない模様。
だとすると、セッション保存先も、namespace毎に変えることも出来そう。

取り敢えず解決。