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 -------");