我正在创建一个用户成对交互的应用程序。一旦用户登录,他将自动连接到仅包含一个人的Socket.io房间,或者如果所有房间都已满,则根据其用户ID创建一个新房间。
我很难过,因为看来socket.io正在根据套接字ID号创建房间,但不会根据我指定的用户ID号创建房间。此外,它很难测试,因为我需要以两个用户身份登录。
服务器/ 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);
}
}
})
})
}
的客户机/ 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);
}