套接字.等待两个玩家都选择了答案的IO事件
Socket.io event that waits for both players to have chosen answers
我在忙着学习socket。我试图弄清楚如何让JS只在两个用户都点击了他们的答案后才启动。
我想要触发的代码是:
<我>我>
// Random number function
function randomIntFromInterval(min,max){
return Math.floor(Math.random()*(max-min+1)+min);
}
// Check if correct + send to server
function correctAnswer() {
var correct = true;
socket.emit('playerCorrect', {answer: correct});
console.log(correct);
buttonRemover();
}
// Check if wrong + send to server
function incorrectAnswer () {
var wrong = false;
socket.emit('playerWrong', {answer: wrong});
buttonRemover();
}
socket.on ('updatePlayer', function (data) {
if (data.answer === true) {
console.log ('Player got it right! ' + data.answer);
}else if (data.answer === false) {
console.log ('Player got it wrong! ' + data.answer);
}
});
这些函数向服务器发送数据以让服务器知道答案是否正确。
<我>我>
socket.on('playerCorrect', function (data) {
io.sockets.emit('updatePlayer', data);
dataRequest();
});
socket.on('playerWrong', function (data) {
io.sockets.emit('updatePlayer', data);
dataRequest();
});
然而,我只希望这东西发生时,两个客户端都点击了一个选项。有办法追踪吗?
对于单个用户集,只需:
// Global variables for maintaining game states
// TODO: Clear this when a new game is started
var nrecieved = 0;
var responses = {}; // Socket id to response
function finish(/* todo: maybe also pass in a game_id or one of the user ids to know which game is being played */){
// Loop through users in game and send them their responses
for(var id in responses){
if(responses.hasOwnProperty(id)){
// Send the response
io.to(id).emit('updatePlayer', responses[id]);
}
}
}
socket.on('playerCorrect', function (data) {
responses[socket.id] = data;
nrecieved++;
if(nrecieved == 2){
finish();
dataRequest();
}
});
socket.on('playerWrong', function (data) {
responses[socket.id] = data;
nrecieved++;
// Only respond if both responses received
if(nrecieved == 2){
finish();
dataRequest();
}
});
socket.id
是分配给每个套接字的唯一标识符,这可能有用。对于多游戏性能,您可能需要更多的逻辑来维护哪些套接字/玩家属于哪些游戏的列表,然后使用该列表将消息定向到正确的用户对。
相关文章:
- 如何使用“引导”来选择引导选项卡;下一个“;按钮我遵循了其他答案,但没有奏效
- 在给定现有答案的情况下,更改日期选择器中的 minDate 选项不起作用
- Javascript 测验 - 如何从多个选择元素的答案中计算分数
- 从选择菜单中收集我的用户选择以及正确答案
- 从<选择>如果选择的选项包含ID='答案'在HTML/JavaScript(JQuery)中
- 根据用户答案从数据库中选择宠物品种/汽车/自行车等的算法
- 当我点击特定的答案时,stackoverflow是如何选择我提供的答案的
- 在选择框中进行选择,并将所选答案显示在另一个中选择
- 如何提交表格,并在每个不同的'选择mysql-query'并将答案插入mysql数据库
- 在线测验:通过选择不同的单选按钮将答案和问题分为3类
- 选择答案前返回对话框
- 如何保持选择上一个答案?(javascript测试)
- 根据之前的答案自动选择下拉选项-Javascript HTML表单
- HTML/JavaScript多项选择测验:设置标题和答案选择功能
- 使用javascript检查是否选择了单选按钮,并根据选择返回特定答案
- (Javascript + HTML)如何得到我的选择语句的答案到我的绘画画布
- 套接字.等待两个玩家都选择了答案的IO事件
- 在测验中选择单选按钮时,突出显示正确和错误的答案
- 质量,答案选择随机化,上升vs下降
- 如何使用JavaScript加载本地JSON文件来更新html中的选择列表??(期待简单的答案,我只是一个初学者)