Problema com a função io.emit e socket.emit no socket.io #1780
Unanswered
JorgeBaes
asked this question in
Perguntas e Respostas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Eu estou fazendo um joguinho multiplayer para aprender mais sobre socket.io, e estou com um problema. Eu tenho um objeto chamado Sala, e dentro do objeto tenho variáveis e tenho funções também. E também eu tenho 3 objetos Sala, e armazeno os 3 em um array. Daí quando uma atualização no objeto sala ocorre, eu executo:
////
Cliente:
socket.emit('updateSala', { data:ArraySalas})
socket.on('updateSala', function (data) {
ArraySalas = data.data
}
////
Server:
socket.on('updateSala', function (data) {
io.emit('updateSala', {data:data.data})
}
////
O que isso faz é mandar o ArraySalas atualizado para todos os sockets e atualizar a variável ArraySalas localmente em todos os clientes.
Só que tem um problema que eu não tenho ideia do porque ocorre:
Ele passa todos os dados do objeto Sala exceto as funções do objeto sala, então fica faltando as funções do objeto.
Pra resolver eu fiz o seguinte:
////
Cliente:
socket.on('updateSala', function (data) {
ArraySalas = data.data
for(let i in ArraySalas){
ArraySalas[i].função = Function(...){...}
....
....
}
}
////
Ai eu passo de novo todas as funções do objeto.
Mas eu queria saber do porque isso acontece e se tem alguma forma de eu transpor os objetos com socket.io sem perder os dados dos objetos.
Obrigadoo :)
Beta Was this translation helpful? Give feedback.
All reactions