Socket.io管理室;允许每个房间2人,动态创建新房间

时间:2015-08-12 23:44:42

标签: javascript node.js websocket socket.io

我正在创建一个用户成对交互的应用程序。一旦用户登录,他将自动连接到仅包含一个人的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);
}

0 个答案:

没有答案