Express 3.0 で Socket.io を使用してセッションを使用する良い方法はありますか? 安全な方法でクライアントのセッション ID を取得する方法は? メンバーのアカウントに固有の通知をメンバーに送信し、メンバーからメンバーへのプライベート チャットを行うには?
Express 3.0 で MySQL ストアを使用しています
Express 3.0 で Socket.io を使用してセッションを使用する良い方法はありますか? 安全な方法でクライアントのセッション ID を取得する方法は? メンバーのアカウントに固有の通知をメンバーに送信し、メンバーからメンバーへのプライベート チャットを行うには?
Express 3.0 で MySQL ストアを使用しています
それを抽象化するために小さなモジュールを書きました。その使用法は次のようになります。Express 3、socket.io 0.9.10、および connect 2.4.5 の (デフォルトの) MemoryStore を使用して作成およびテストされています。互換性のある他のストアでは問題なく動作するはずです。
var SessionSockets = require('session.socket.io')
, sessionSockets = new SessionSockets(io, sessionStore, cookieParser);
sessionSockets.on('connection', function (err, socket, session) {
//your regular socket.io code goes here
});
仕組みの詳細については、https://github.com/wcamarao/session.socket.ioを参照してください。
README の、独自のセッション ストア キーで使用する方法が記載されている部分に注意してください (mysql ストアがデフォルトの「connect.sid」以外の名前を使用していると想定しています)。
Express と socket.io を統合するための非常にシンプルなマイクロフレームワークであるexpress.ioを確認してください。Express および socket.io セッションを自動的に処理します。
npm install express.io
ここでセッションサポートの例をチェックしてください:
https://github.com/techpines/express.io/tree/master/examples#sessions
私はそれを機能させるために少し違うことをしました。nodester github に関する多くの投稿を読んで、次の解決策を見つけました....
交換:
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
と:
var server = http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
var io = require('socket.io').listen(server);
私の計画は、express3 と socket.io に関する問題が解決されるまで、この回避策を続けることです。