2014-07-09 51 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