Javascript NodeJ是否将服务器数据传递到套接字?

Javascript NodeJ是否将服务器数据传递到套接字?,javascript,node.js,mongodb,sockets,Javascript,Node.js,Mongodb,Sockets,我使用nodejs和mongodb创建了一个用户登录。我有一个路由器。我在下面删除了一些代码,但我在这个问题中关注的主要路线是/profile和/logout路线 基本上,我希望在创建路由时将req或res数据传递给套接字。由于路由在服务器上,我不确定如何发送数据。我的意思是,通常从客户机到服务器发送消息,反之亦然,而不是从服务器到服务器 所以,也许我是瞎子或者知识不够,但我的问题是如何将数据传递到我的套接字 module.exports.initialize = function(app, p

我使用nodejs和mongodb创建了一个用户登录。我有一个路由器。我在下面删除了一些代码,但我在这个问题中关注的主要路线是/profile和/logout路线

基本上,我希望在创建路由时将req或res数据传递给套接字。由于路由在服务器上,我不确定如何发送数据。我的意思是,通常从客户机到服务器发送消息,反之亦然,而不是从服务器到服务器

所以,也许我是瞎子或者知识不够,但我的问题是如何将数据传递到我的套接字

module.exports.initialize = function(app, passport) {

    app.get('/profile', isLoggedIn, function(req, res) {
        res.render('profile', { user : req.user });
        //socket.emit('user loggedIn', { user : req.user })
    });

    app.get('/logout', function(req, res) {
        req.logout();
        res.redirect('/');
    });


    // route middleware to make sure a user is logged in
    function isLoggedIn(req, res, next) {
        if (req.isAuthenticated())
            return next();
        res.redirect('/');
    }

};
旁注:我的套接字代码位于我的server.js中

var users = {};

io.sockets.on('connection', function (socket) {

    // Listen to a new user then emit the user to all clients
    socket.on('user loggedIn', function (data) {

        socket.userName = data;
        users[socket.userName] = socket;
        io.sockets.emit('user name', Object.keys(users));
        console.log(users);

    });

});
基本上,我只想将所有登录用户存储在一个对象中,并将所有登录用户发送给客户端,允许他们进行实时聊天

看起来我需要做的就是将数据传递到我的套接字,所以我确信传递数据很简单,但我不知道如何传递

谢谢

客户端代码 但是用户名应该是唯一的

socket.emit('myname',{username:'uniqueid});
服务器端代码

var onlineuser=[];
socket.on('myname',function(data){
                      socket.username=data.username;
                   onlineuser.push(data.username);
                   io.sockets.emit('onlineuser',onlineuser);
              });

  socket.on('disconnect',function()
          {
              var i=onlineuser.indexOf(socket.username);
                 onlineuser.splice(i,1);
              io.sockets.emit('onlineuser',onlineuser);
          });

顺便说一句,我目前正在进行类似的设置,但是当用户登录时,我们保存包含用户详细信息的会话,套接字连接到同一会话存储。因此,在套接字连接中,我们还可以访问当前用户的会话。我接受了这个建议。嘿,酷,你也在做类似的事情,我来看看,希望能有所帮助。