簡體   English   中英

Node.js將服務器數據傳遞給套接字?

[英]Nodejs pass server data to the socket?

我使用nodejs和mongodb創建了一個用戶登錄。 我有一個路由器。 我在下面剝離了一些代碼,但是我在這個問題中關心的主要路由是/profile/logout路由。

基本上,我想在進行路由時將reqres數據傳遞給套接字。 由於路由在服務器上,因此我不確定如何發出數據。 我的意思是通常您是從客戶端到服務器發出信號,反之亦然,而不是服務器到服務器。

因此,也許我是盲人或知識不足,但是我的問題是如何將這些數據傳遞給我的套接字。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM