2013-06-22 23 views
0

我有一個小應用程序生成代碼並將其存儲在mongodb(我的Chrome瀏覽器)中。另一個用戶(我的Firefox瀏覽器)輸入給定的代碼並播放它,讓我的Chrome瀏覽器知道他在那裏。收到廣播後發送給所有人

現在我想讓我的Chrome瀏覽器向自己和我的Firefox瀏覽器發出協議,以便在協議發佈的時刻它們都被相同的函數解析。

但問題是我只在終端上得到1個控制檯日誌,這導致我認爲只有Chrome(或Firefox,我懷疑)正在監聽這個發射。

任何人都可以看看爲什麼不是兩個瀏覽器收到'協議'散發?

我app.js:(上連接部分)

io.sockets.on('connection', function (socket) { 
    socket.on('code_game', function (data) { 
     if (codeToUse == data.code) { 
      //The receiving end received the proper code from the sending end 
      console.log(data.secondUser + ' is verbonden via de code: ' + data.code); 
      //Emit to all parties to let everyone know there's a connection 
      socket.emit('agreement', { 
       userOne: { 
        name: 'Timen', 
        code: codeToUse 
       }, 
       userTwo: { 
        name: data.secondUser, 
        code: data.code 
       } 
      }); 
     } 
    }); 
}); 

而且JS文件被稱爲我的觀點:(sendToFirstUser是火狐在這種情況下)

var receivingUsersCode = false; 
var receivingUsersName = false; 
var socket = io.connect('http://localhost'); 

socket.on('agreement', function (data) { 
    console.log("hooray"); 
}); 

function setReceivingData(code, username) { 
    receivingUsersCode = code; 
    receivingUsersName = username; 
    ding = 'drie'; 
    $('#new_game').css('display', 'block'); 
    $('.theCode').html(receivingUsersCode); 


} 

function sendToFirstUser(code, username) { 
    socket.emit('code_game', { code: code, secondUser: username}); 
} 

回答

0

我不知道我完全明白你在問什麼。但在我看來,你在問爲什麼Chrome和Firefox瀏覽器都沒有發佈「協議」事件。如果是這樣,我認爲你已經回答了你自己的問題:

「另一個用戶(我的Firefox瀏覽器)輸入給定的代碼並播放它,讓我的Chrome瀏覽器知道他在那裏。

//Starts broadcasting to other clients 
io.sockets.on('connection', function (socket) { 
    socket.broadcast.emit('code_game', { code: req.body.code, secondUser: req.body.secondUser}); 
}); 

Firefox瀏覽器只發射到其他客戶端(Chrome瀏覽器)通過socket.broadcast.emit。所以,只有Chrome瀏覽器纔會在瀏覽器端收到'code_game'事件。但是,在瀏覽器端代碼,當它接收到「code_game」事件中的客戶端發出的「協議」事件:

socket.on('code_game', function (data) { 
    if (receivingUsersCode == data.code) { 
     console.log(data.secondUser + ' is is connected via code: ' + data.code); 
     listenForMutualConnection(); 
     socket.emit('agreement', { 
      userOne: { 
       name: receivingUsersName, 
       code: receivingUsersCode 
       }, 
      userTwo: { 
       name: data.secondUser, 
       code: data.code 
      } 
     }); 
    } 
}); 

由於只有Chrome瀏覽器正在接收「code_game」事件,它也是唯一一個發射'協議'事件。

+0

我希望雙方最終達成協議,以便我可以重定向雙方做X.我設法讓我的Firefox發射到code_game,code_game方法現在發回到Firefox。我怎樣才能讓code_game方法發送給雙方?我已經更新了我的代碼。 – CaptainCarl

+0

Aaaaannndd已修復。我應該在我的code_game方法中通過'io.socket'而不是'socket'發射 – CaptainCarl