两个玩家的节点js setInterval

时间:2015-05-11 13:31:31

标签: jquery html node.js mongodb socket.io

我正在开发node.js和socket.io以及jquery中的游戏。主要时间有两个用户使用不同的位置和不同的浏览器登录到该站点。当第一个用户登录玩游戏时,应该出现一条消息" Your Turn"他将打30秒。轮到他了。 30秒后轮到第二个使用不同位置登录的用户"轮到"完成30秒后。第二个用户轮到第一个用户,这个过程将继续。

这是我在node.js中的app.js

bob

这是我的index.html

 var express = require('express')
    , app = express()
    , http = require('http')
    , server = http.createServer(app)
    , io = require('socket.io').listen(server);
    server.listen(8080);
    app.get('/', function (req, res) {
    res.sendfile(__dirname + '/index.html');
    });
   var users = {};

    io.sockets.on('connection', function(socket){
    socket.on('addUser', function(user){
    socket.user = user;
    users[user] = user;
    socket.emit('updateUser',
    socket.user + ' has connected to this game');
    });
    socket.on('playGame1', function(data){
    io.sockets.emit('update',  data);
    });
    });

所以请告诉我如何为两个玩家做setInterval。这是我的代码。当我创建它时,调用同时发送给两个用户,但我不想要那个。它是一个完整运行的代码,你可以检查它。

感谢Raghvendra

1 个答案:

答案 0 :(得分:0)

您的描述需要考虑的一些事项。这些只是构建应用程序的想法 - 运行它的代码会更多。

考虑一个网络套接字"频道"为每个客户(至少每个游戏)。也许是socket.io文档中的room or namespace。这将允许您向正确的客户端发送消息。或者,您可以在客户端使用某些标识符进行过滤,例如: "此消息用于id = player1"。他们都收到消息,并且您的客户端代码在重要时显示它。

setInterval将在服务器端定义。可能这需要perGame,你会在游戏结束时取消内部。你也可以在服务器上全局完成(只要考虑内部运行时的处理,如果你有很多游戏......)。对于这个简单的示例,请使用Node的本机调用setInterval

function changeTurns(){
   //check server for message to send.
   //check server for web socket to send message to
   //send message
}

setInterval( function(){
  changeTurns();
}, 30000 );

服务器还应跟踪转向的情况。也许客户端会在不轮到他们时禁用操作,但更好的是当他们不在服务器上时不允许操作。您可能需要向两个客户发送消息,因此一个人知道轮到他们了,另一个知道轮到他们了。这可以是在客户端检查参数的单个消息,也可以是发送给各自客户端的两个不同消息turnOverturnStarted