Problem with socket.emit

1

I am developing a game with Unity3d and I am using node.js and socket.io I have 5 events of which 4 of them work perfect the problem is in the latter, in which I get the different rooms there, I do foreach of them and I assign more data and others and then proceed to make socket.emit the problem is that if I pass the array is like if you reset the connection since I get a console.log that is only put in io.on('connection') , if I do emit without anything works perfectly and if I pass a variable it also restarts but if I pass the content of the variable directly it works perfect.

var io = require('socket.io')(2558);
var MongoClient = require('mongodb').MongoClient;
var user = require('./UserData/user').user;

var mdbconfig=
{
username:'',
password:'',
db:''
};
var players     = [];
var ids=1;
var usersdata;
io.on('connection', function(socket, res) {

  MongoClient.connect('mongodb://'+mdbconfig.username+':'+mdbconfig.password+'@ds151208.mlab.com:51208/'+mdbconfig.db, function(err,db){
usersdata = new user(db);

}); 

console.log("usuario conectado");
socket.leave(socket.id);

    socket.on('REGISTRO', function(data){
        usersdata.addUser(data['usuario'], data['password'],data['email'], function(err,user){
            if(err)
            {
                console.log(err);
            }
            else
            {
                console.log(user);
            }

        });
    });
    socket.on('PLAY', function(data){   
        usersdata.validateLogin(data['usuario'],data['password'], function(err,user){
            if(err)
            {
                console.log(err);
            }
            else
            {
                console.log(user);
            }
        });

                        var player = {
                            jugador:
                            {
                            id:ids++,
                            name:data['usuario']       
                            }

                        };
                        players[socket.id] =player;
                        JSON.stringify(players);
                            console.log("client connected, id = ", players);


        socket.emit('PLAY',data);
    });


    socket.on('crearSala', function(){
            console.log("data: "+players[socket.id]["jugador"]["name"]);
            socket.join('SALA DE: '+players[socket.id]["jugador"]["name"]);
            console.log(io.sockets.adapter.rooms);
            //socket.emit('crearSala',data);
    });

    socket.on('entrarSala', function(data){
            console.log("entre en entrarSala");
            socket.join(data);
            console.log(io.sockets.adapter.rooms);
    });
    socket.on('listaSalas', function(){
            var salas=io.sockets.adapter.rooms;
            var totalSalas=[];

            if(salas)
                {
                    for (var sala in salas)
                    {
                        if(!salas[sala].hasOwnProperty(sala))
                        {
                            var obj =
                            {
                                id:socket.id,
                                name:sala,
                                ping:0
                            };
                            totalSalas.push(obj);
                        }
                    }
                }
            console.log("Entre en listSalas");     
            socket.socket.emit('listaSalas', totalSalas);
    });


 });


 console.log("------- server is running -------");
    
asked by Gokudera 11.01.2017 в 22:32
source

0 answers