10
したがって、私はこの問題をexpressでsocket.ioを使用しています。私はそれがかなり自己説明的だと思う。私は単にセッションを取得し、パラメータデータをsocket.ioに要求するだけです。一部の部屋がプライベートになるため、これはクライアント側では実行できません。どんな解決策ですか?socket.ioでnode.jsを使用してリクエストデータをどのように取得して表現しますか?
io.sockets.on('connection', function (socket) {
socket.join(ROOM ID)
socket.on('send message', function(data) {
NEED USER ID STORED IN session.user
}
})
app.get('/:roomid', function (req, res) {
//req.session.user = THE USER ID
//req.params.roomid = THE ROOM ID
})
しかし、私は部屋に入るためにsocket.ioにroomid要求をどうやってもらえますか? –
セッションストアには、セッションIDを引数として取る 'get'メソッドがあるので、セッションIDをクッキーヘッダから取得してsessionStoreに渡すことができます。 しかし、これはストアを手動で初期化し、オプションで指定する必要があります。 var store = new express.MemoryStore; express.session({store:store}); とsocket.ioよりもstore.get( 'sessionid'、function(err、data){//ここでセッションにアクセスします}); – 3rdEden
少なくとも私のNodeJSでは、 "ハンドシェイク"にsocket.ioへの呼び出しのクエリパラメータが含まれています: '... "url": "/ socket.io/1/?t=1355054837418" ... "たとえば、「id」パラメータを取得するために、「referer」からクエリ文字列パラメータを取得する必要がありました。url.parse(socket.handshake.headers.referer、true).query.id –