现在,下面的代码生成每次连接时递增创建的数字。因此,一个用户进入他们获得播放器1的页面。第二个用户获得播放器2.但是当我关闭浏览器中的标签并打开另一个标签时,我得到了播放器3" ....
如果一个人关闭或重新加载标签,他们将成为第二个玩家,如果另一个标签是原始玩家的一部分,如果他是第二个玩家则成为玩家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 :(得分:0)
断开事件应该没有(数据)
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 });
问题似乎是断线没有触发。