将nodejs post参数传递给套接字连接

时间:2017-05-13 10:25:16

标签: node.js sockets ejs

我正在尝试编写简单的nodejs套接字程序来显示用户连接的列表。我在保持用户名和socket.id映射时遇到问题。

这是服务器端代码:

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);
    });
});

有人可以帮我在post请求中获取socket.id吗? 或者其他方式是将发布请求信息(用户)传递给io.connection块?

1 个答案:

答案 0 :(得分:0)

我建议在使用socket.io时使用json web令牌对用户进行身份验证。

这是一篇很好的文章,可以解决您面临的问题。 Token-based Authentication with Socket.IO