我在多人游戏测验中有2名玩家。
每个客户都有真实的答案和错误的答案。
真答案:socket.true
错误答案:socket.false
我逐渐增加每个变量的答案,最后,在5个答案之后,我调用了finishgame函数。
我想在finishgame
函数中发送包含每个客户端的真实答案和错误答案计数的数据。
我该怎么做?
如果我使用socket.emit
或socket.broadcast.to(socket.room).emit
,则只会发送一个套接字数据。
例如:
Send joe -> joe has 3 true , 2false answers;
Send tim -> tim has 1 true , 4 false answers.
但它并没有发生。
答案 0 :(得分:0)
现在创建一个名为answers
的新对象,当客户端启动测验时,如果需要添加一个真或假的答案,则创建一个以socket.id为索引的新answers
对象编辑/创建该answers
对象的属性(示例answers[socket.id]['trueAnswers']++
)。现在,当您想要向客户端发送真实和错误答案时,您可以使用提供的socket.id作为索引从您想要数据的客户端轻松读取answers
对象。
示例:
// Create the object
Answers = new Object();
// Client starts the quiz:
Answers[socket.id] = {
trueAnswers: 0,
falseAnswers: 0
};
// Client made a correct answer:
Answers[socket.id].trueAnswers++;
// Send answers data back that is owned by this socket.id
io.sockets.socket(socket.id).emit(Answers[socket.id]); // Shows 'Object {trueAnswers: 1, falseAnswers: 0}'
编辑:如果您想通过forEach方式发送此内容,就像您描述的那样,我相信这可能就是您所寻找的内容:
请注意,此函数在高于1.0的socket.io版本中不再可用,建议保留socket.id的数组,以便在需要时迭代它们。
io.sockets.clients().forEach(function (socket) {
// This will go trough all connected sockets
});