插座之间交替转动

时间:2015-08-07 23:25:44

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

让我们说html文件中有一个div,游戏是每个玩家都可以改变颜色但是只有在其他玩家轮到他们的时候他们才能改变颜色,他们可以整天轮流转换。

我一直在将玩家的回合与他们所在的套接字联系起来。当第一个客户端进入像localhost这样的网站时,我真的希望发生以下情况:8080他们应该受到“你是玩家1”的欢迎,第二个访问网站的人应该说“你是玩家2”。我也希望这样当页面刷新时,客户端会断开连接而另一个玩家自动变为1.最近刷新的那个变为2,因为那是最后一次连接。

我怎么能这样做?我还想插入这些信息,以便我可以做点击标题中的内容。

我希望能够做到这样的事情。

var player; 
//player will be changed dynamically depending
$("div").on("click", function(){

    //if player == 1
    //player 1 cannot click again until player 2 from another socket clicks and the color has changed
    //change color

})



io.on("connection", function(socket){
    //Every time a person connects output their player number. Max 2 players
    //So on first connection == player 1
    //Second connection == player 2
    //If first connection refreshes page that browser / tab becomes player 2
    //  and the original player 2 become player 1

}

1 个答案:

答案 0 :(得分:0)

(我假设您使用的是客户端/服务器架构,而不是P2P)

在连接时,向服务器发送一个包,表明加入请求:

socket.emit('joinReq', {}); //Send request to server

在服务器端收听此事件并进行处理。您还需要跟踪服务器上的当前玩家数量

io.on('connection', function (socket) {
    socket.on('joinReq', function (data) {
        //update player count
        //Send player count over socket
        socket.emit('playerNumUpdate', { playerNum: <playernum variable> });
    });
});

Aaand终于在客户端上接收并处理了这个

socket.on('playerNumUpdate', function (data) {
    <playernum variable> = data.playerNum; //Get the number sent by the server
});