2017-05-13 14 views
0

私は単純なnodejsソケットプログラムを書いて、接続しているユーザのリストを表示しようとしています。 usernameとsocket.idのマッピングに問題があります。ソケット接続にnodejsポストパラメータを渡す

ここでは、サーバー側のコードは次のとおりです。

app.post('/login', function(req, res){ 
    var user = { 
        id: socket.id,//how to get this socket.id? 
        username: req.body.username, 
        loggedInTime: new Date() 
      }; 
    connectionsArray.push(user); 
    res.render('main'); 

}); 

io.on('connection', function(socket){ 
    console.log('Connecting user ' + socket.id); 

    if (connectionsArray.length > 0) { 
     setInterval(function(){ 
       io.sockets.emit('connectionsArray', connectionsArray); 
      },1000); 
    } 

    socket.on('disconnect', function() { 

     connectionsArray = connectionsArray.map(function(conn){ 
          return conn.id != socket.id; 
         }); 
     console.log('user disconnected with' + socket.id); 
    }); 
}); 

いくつかのいずれかが私がポスト要求内socket.id取得することができますか? または、io.connectionブロックに投稿要求情報(ユーザー)を渡すことは他の方法ですか?

答えて

0

socket.ioを使用する場合、ユーザーを認証するためにjson webトークンを使用することをお勧めします。

ここには、あなたが直面している問題に取り組む優れた記事があります。 Token-based Authentication with Socket.IO

+0

ご提案いただきありがとうございますが、ここでio.connectionブロックに投稿リクエストパラメータを渡します。 usernameとsocket.idの間のマッピングを維持する必要があります –