【问题标题】:get previous data of socket(connected user) after refresh or disconnect using socket.io and node.js使用 socket.io 和 node.js 刷新或断开连接后获取套接字(已连接用户)的先前数据
【发布时间】:2017-08-28 10:42:46
【问题描述】:

您好,我对 socket 和 node.js 很陌生,我正在开发一个游戏应用程序,其中两个用户(不同的浏览器)玩游戏。 我已将 server.js 用于处理用户事件的节点/套接字和 cilent.js。 假设两个用户都连接并玩游戏,如果一个用户断开连接或刷新浏览器,那么我没有得到它以前的数据,如用户名等。我试图获取断开连接的套接字 id

socket.on('disconnect', function()
    {///timer used here in which i can get socket id of disconnected but what next
});

但是接下来要做什么,我怎么知道在引用/断开连接之后 同一用户已连接,如何获取其以前的数据,如用户名?

【问题讨论】:

    标签: node.js sockets


    【解决方案1】:

    为了跟踪断开连接的用户,您必须创建一个数组,其中将包含与房间断开连接的用户的用户名,要实现此尝试下面的代码,

    socket.on('disconnect', function()
        array.push(socket.username);
    });
    

    为了让客户端的用户名推送到数组中,您必须在用户连接到房间时添加用户名,可以通过如下方式实现,

    socket.on('joinroom',function(data){
        socket.username = "user1";
    }
    

    现在您有一个数组,其中包含已断开连接的用户名列表,现在当用户连接到房间时 put for 循环将在数组中旋转,如果在数组中找到用户名,那么您必须知道同一用户已连接然后您可以将该用户添加到上一个房间。

    若要获取与该用户断开连接的用户的先前房间,您还必须在数组中添加房间,可以通过以下方式完成,

    var obj={username:socket.username , room:socket.room}
    array.push(obj);
    

    当用户连接到房间时,您还必须添加房间,

    socket.on('joinroom',function(data){
        socket.username = "user1";
        socket.room = "roomname";
    }
    

    希望这会有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 2014-04-30
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 2018-03-03
      • 1970-01-01
      相关资源
      最近更新 更多