扱えるようにしてやります。io.listen(server);¶イベントハンドラを設定します。側のセッションを管理しています。こんなふうにコールバックにコールバックを渡すあたりがたまらないですね。認証済みの場合のイベントハンドラです。認証が済んでいない場合のイベントハンドラです。});¶メッセージ受信時のイベントハンドラです。require('util');¶では、いよいよセッション管理のミドルウェアについて見ていきます。したときに呼んでいました。引数からオプションを受け取るために関数にしていたわけですね。verifier(options){¶デフォルトの設定です。引数でもらったオプションを反映させています。複数のセッションを扱うためのオブジェクトです。用のセッション管理の関数をプロパティにもつオブジェクトを返します。渡していたミドルウェアです。いう関数を引数にとる、というのが決められたインターフェースです。トークンを生成します。Math.random();¶ユニークな値をとれるまで繰り返します。}¶トークンをキーとしてセッションデータと発行した日時を保存しています。};¶レスポンスを生成します。呼んで次のミドルウェアに処理をまかせます。セッションを管理する関数です。{¶トークンの有効性をチェックする関数を定義します。session_jar[token];¶セッションの期限切れをチェックしています。認証されたら削除しているので、トークンは1回だけしか使わない仕様になっています。対するイベントハンドラを設定します。トークンをチェックしています。この関数を実行するのは最初にメッセージを受信したときだけです。イベントをクライアントに対して発行します。対するイベントハンドラをバインドします。退避する処理は下の方にでてきます。イベントをクライアントに対して発行します。イベントのハンドラだけ退避するように書き換えます。呼び出し元にクライアントを渡します。次にクライアント側を見ていきます。対するイベントハンドラをバインドします。});¶セッションが確立した場合、このメッセージは受信されます。1000);});¶セキュアでないコネクションを示すための例です。こちらで送信したメッセージは弾かれます。クライアントサイドのモジュールのコードです。トークンを取得して、返ってきたらコネクションを張り直します。Date()+0));¶トークンを取得するためのヘッダを設定します。xhr.setRequestHeader("x-access-request-token","simple");¶レスポンスに対するコールバックを設定します。};¶リクエストを送信します。xhr.send();}以上でおしまいです。ミドルウェアとしてセッション管理を実装するあたりや、イベントハンドラを一旦避けるあたりの処理が面白かったです。改善の余地がちょこちょこあるので、手を入れていこうと思います。つかってコードから生成しました。