2015-08-08 49 views
0

现在,下面的代码产生每次连接时增量创建的编号。所以一个用户进入页面,他们得到的球员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}) 
}) 

})

回答

0

的断开事件,应该没有(数据)

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

如果还是不行...

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

在cl ient:

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

这个问题似乎是断开不点火。