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毎に変えることも出来そう。
取り敢えず解決。