State Sync change in objects
-
Hi! I'm still a bit new to colyseus, so I apologize if this question might sound dumb:
I'm trying to synchronize my server and client's state with an object
this.setState({ key: {} })
On the server, I have a piece of logic that handles messages from the client and modify the entire object, key.
When listening for changes on the client, nothing comes up:
this.room.listen('key', change => { console.log('key state has changed'); });
unless I do:
this.room.listen('key/:id', change => { console.log('key state has changed'); });
But, I don't want individual attributes of the object that changed. I want the entire object.
Unless the whole point of state sync is to synchronize small changes, then would I just broadcast the new Key Object as a work around?
Any help or suggestions would be greatly appreciated!
-
Hi @zzmarkzz321, that's correct! The client will receive each single change you've made from the server-side.
You can catch all the properties by using:
// client-side this.room.listen('key/:attribute', change => { console.log(change.path.attribute, "has changed to", change.value); });
If you'd like to send the whole object directly, you can broadcast it from the server:
// server-side this.broadcast(yourNewObject);
And catch it using
onMessage
signal:this.room.onMessage.add(message => { console.log("here's the new object:", message); });
-
@endel Wow thanks so much for the quick and helpful response! Looking forward to diving deeper into the framework :)