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 是 Firefox)

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});
}
4

1 回答 1

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 浏览器仅通过 socket.broadcast.emit 向其他客户端(您的 chrome 浏览器)发射。因此,只有 chrome 浏览器会在浏览器端接收 'code_game' 事件。但是在您的浏览器端代码中,客户端在收到“code_game”事件时会发出“agreement”事件:

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' 事件,它也是唯一一个发出 'agreement' 事件的浏览器。

于 2013-06-23T00:38:06.547 回答