Я посылаю сокет на стороне сервера
socket.emit ('foundUsers', currentUser, otherUsers)
otherUsers - это массив объектов, не содержащий объекта currentUser.
currentUser - это объект, похожий на структуру объекта других пользователей, но содержащий 2-3 дополнительных параметра.
Как пользователь, я всегда получаю объект currentUser. Он никогда не бывает пустым. В currentUser проблем нет.Если других пользователей нет, я получаю пустой массив otherUsers, который является правильным.
Но проблема возникает, когда у меня есть массив otherUsers с объектом (означает, что найден хотя бы 1 другой пользователь), мой объект currentUser также присутствуетпо последнему индексу otherUsers. [{1 другой объект пользователя}, {объект currentUser}]
Я проверил на стороне сервера, я не отправляю currentUser в otherUsers.
Я пыталсяотправлять статические данные currentUser и otherUsers с сервера, но я всегда получаю их корректно.
Временное или постоянное решение, которое я использовал, - отправка отдельных сокетов currentUser и otherUsers, что прекрасно работает.
Ноя хочу знать, почему объект currentUser присутствует в последнем индексе других пользователей.
var foundUsers={
currentUser:{},
otherUsers:[]};
var getFixture = function(fixture,id){
if(fixture.GetBody().GetUserData() !== null && fixture.GetBody().GetUserData().type !== null ){
if(fixture.GetBody().GetUserData().type=="player"){
if(id==fixture.GetBody().GetUserData().id){
foundUsers.currentUser={
id : fixture.GetBody().GetUserData().id,
name : fixture.GetBody().GetUserData().name,
health: fixture.GetBody().GetUserData().health,
pos: fixture.GetBody().GetPosition(),
angle:fixture.GetBody().GetAngle(),
powerUps:fixture.GetBody().GetUserData().powerUps,
};
}else{
foundUsers.otherUsers.push(
{
id : fixture.GetBody().GetUserData().id,
name : fixture.GetBody().GetUserData().name,
health: fixture.GetBody().GetUserData().health,
pos: fixture.GetBody().GetPosition(),
angle:fixture.GetBody().GetAngle(),
};
);
}
}
}
return true;};
for (let u of users){//for loop iterating over all users
world.QueryAABB( getFixture , aabb , u.id );
u.socket.emit('start',foundUsers.currentUser,foundUsers.otherUsers);
//resetting foundUsers
foundUsers={
currentUser:{},
otherUsers:[]
};}