我有一个小应用程序生成代码并将其存储在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});
}
答案 0 :(得分: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”事件时会发出“协议”事件:
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'事件,因此它也是唯一一个发出'协议'事件的事件。