Je crée une application dans laquelle les utilisateurs interagissent par paires. Une fois l’utilisateur connecté, il est automatiquement connecté à une salle Socket.io contenant une seule personne ou, si toutes les salles sont pleines, créez une nouvelle salle en fonction de son identifiant utilisateur.
J’ai de la difficulté, car il semble que socket.io crée des salles basées sur le numéro d’identification du socket, mais ne crée pas les salles sur la base du numéro d’identification de l’utilisateur spécifié par moi. En outre, il est difficile de tester car je devrais ouvrir une session en tant que deux utilisateurs.
serveur / socket.js:
module.exports = function (io) { io.sockets.on('connection', function (socket) { socket.emit('message', {message: "Waiting for player..."}) socket.on('create', function (newRoom) { var rooms = io.sockets.adapter.rooms; var clients = function (rm) { return io.of('/').adapter.rooms[rm]; }; // if any of the current rooms have only one // player, join that room. for (room in rooms) { console.log(room) if (Object.keys(clients(room)).length == 1) { socket.join(room); } else { socket.join(newRoom); } } }) }) }
client / sockets.js:
window.onload = function () { var socket = io.connect('http://localhost:3700'); var messageBox = document.getElementById('message_box'); socket.on('message', function (data) { console.log(data); console.log(data.message); messageBox.innerHTML = data.message; }); socket.emit('create', 'ROOM: ' + loggedInUser._id); }