【问题标题】:updating user info of socket on connection and disconnect在连接和断开连接时更新套接字的用户信息
【发布时间】:2015-10-31 13:07:04
【问题描述】:

现在,下面的代码会生成在每次连接时增量创建的数字。所以一个用户转到他们得到播放器 1 的页面。第二个用户得到播放器 2。但是当我在浏览器中关闭一个选项卡并打开另一个选项卡时,我得到“播放器 3”....

  1. 我只希望最多有 2 个玩家(现在它一直在增加)
  2. 如果一个人关闭或重新加载标签,他们将成为第二个玩家,如果另一个标签是原始玩家的一部分,如果他是第二个玩家,则成为玩家 1

    $(document).ready( function(){
    
     var playernum;
        socket.on("connect", function(){
    
            socket.emit("joinReq", {});
        })
        socket.on("playerNumUpdate", function(data){
            playernum = data.playerNum;
                $(".playernum").html("player num is " + playernum)
        })
        socket.on("disconnect", function(){
            socket.emit("leaveReq", playernum);
            $(".playernum").html("player num is " + playernum)
        })
     });
    

服务器:

io.on("connection", function(socket){
// socket.on("was clicked", function(data){
//  if(data == true){
//      socket.emit("return fromclick")
//  }
// })
socket.on("joinReq", function(data){
    playernum++
    socket.emit("playerNumUpdate", {playerNum : playernum})
})
socket.on("leaveReq", function(data){
    socket.emit("playerNumUpdate", {playerNum : playernum})
})
socket.on("disconnect", function(data){
    playernum = playernum--;
    socket.emit("playerNumUpdate", {playerNum : playernum})
})

})

【问题讨论】:

    标签: javascript node.js sockets events socket.io


    【解决方案1】:

    断开连接事件应该没有(数据)

    socket.on("disconnect", function(){
        playernum = playernum--;
        socket.emit("playerNumUpdate", {playerNum : playernum})
    });
    

    如果这不起作用......

    试试这个: How can i handle Close event in Socket.io?

    在客户端:

    var socket = io.connect(<your_url>, {
    'sync disconnect on unload': true });
    

    问题似乎是断开连接没有触发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-09
      • 2011-01-01
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 2021-03-05
      • 1970-01-01
      相关资源
      最近更新 更多