2014-07-09 47 views
1

我在一个多人测验中有2个玩家。通过socket.io向每个插座发送私人信息

每个客户都有真实答案和错误答案。

真正的答案:socket.true

错误的答案:socket.false

我增加了每个变量回答的答案,终于在5个回答,我打电话finishgame功能。

我想向finishgame函数中的每个客户端发送一个包含真实答案和错误答案数的数据。

我该怎么做?

如果我使用socket.emitsocket.broadcast.to(socket.room).emit它只发送一个套接字的数据。

例如:

Send joe -> joe has 3 true , 2false answers; 
Send tim -> tim has 1 true , 4 false answers. 

但它不会发生。

回答

0

创建一个名为answers新的对象现在当一个客户端启动创建测验新answers对象与socket.id为指标,如果你需要添加一个真或假的回答您只需编辑/创建一个属性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办法像你描述我的信念发送此这可能是你正在寻找:

  • 请注意该函数在socket.io版本高于1.0时不再可用,建议保留一个你的socket.id的数组,以便在需要时迭代它们。

    io.sockets.clients().forEach(function (socket) { 
           // This will go trough all connected sockets 
        }); 
    
+0

我需要发送的同一时间不同客户这个信息,所以我需要在jQuery的... – monur00006

+0

@ monur00006好吗像PHP或。每()的foreach一个功能,我更新了我的答案 – GiveMeAllYourCats

+0

它说typeError:对象#没有方法'客户'@MDG – monur00006