Ich versuche, eine App (Omegle wie) zu erstellen, wo Menschen sich einloggen und mit zufälligen Personen sprechen können.
Fall: Wenn sich zwei Personen (Clients) anmelden, dann console.log (Raum); innerhalb des Clients (Chat-Start-Ereignis) druckt den Raum.Aber wenn ein dritter Client anmeldet, anstatt zu warten, erstellt er einen neuen Raum und verbindet sich mit einem der beiden anderen, um einen neuen Raum zu schaffen Funktion findPeerForLoneSocket (Socket);Socket.io zufälliger Chatroom
Server-Seite:
// 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('/');
}
})
Kunde:
$(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);
});
});