我正在开发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
答案 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 );
服务器还应跟踪转向的情况。也许客户端会在不轮到他们时禁用操作,但更好的是当他们不在服务器上时不允许操作。您可能需要向两个客户发送消息,因此一个人知道轮到他们了,另一个知道轮到他们了。这可以是在客户端检查参数的单个消息,也可以是发送给各自客户端的两个不同消息turnOver
和turnStarted
。