【发布时间】:2017-09-21 20:06:43
【问题描述】:
我正在尝试创建一个应用程序(类似omegle),人们可以在其中登录并与随机的人交谈。
案例:当两个人(客户)登录然后console.log(房间);在客户端(聊天开始事件)中打印房间。但是当第三个客户端登录而不是等待时,他创建了一个新房间并与另外两个创建新房间中的一个连接。根据我的情况,这不应该发生函数 findPeerForLoneSocket(socket);
服务器端:
// Socket.io Setup
var io = socket(server);
var allUsers = {};
var rooms = {};
var queue = [];
var names =[];
app.get('/chat2',function(req,res){
if (req.isAuthenticated()) {
res.render('chat');
var findPeerForLoneSocket = function(socket) {
if (queue.length > 0) {
var peer= queue.pop();
var room = socket.id + '#' + peer.id;
peer.join(room);
socket.join(room);
rooms[peer.id] = room;
rooms[socket.id] = room;
peer.emit('chat start', {'name': names[socket.id], 'room':room});
socket.emit('chat start', {'name': names[peer.id], 'room':room});
} else {
queue.push(socket);
}
}
io.on('connection', function(socket) {
findPeerForLoneSocket(socket);
});
} else {
res.redirect('/');
}
})
客户端:
$(document).ready(function(){
var socket = io('http://localhost:3000');
var connected = false;
var message = document.getElementById('message'),
handle = document.getElementById('handle'),
btn = document.getElementById('send'),
btn2 = document.getElementById('next'),
output = document.getElementById('output');
socket.on('connect', function (data) {
connected = true;
});
socket.on('chat start', function(data) {
$( "#connecting" ).remove();
$( "#connected" ).text('Connected...');
room = data.room;
console.log(room);
});
});
【问题讨论】:
标签: node.js sockets express websocket socket.io