Welcome to the rather shoddily structured updates from speckle. Grab a beer (coffee!), sit down, and enjoy the show:
Global updates happen whenever the full state of the stream changes. That’s a safe one to handle.
Meta updates happen when the stream name changes, or any other metadata around the stream (not its contents!)
Object updates happen only when the stream contents changed (ie, its objects).
Children updates happen only when a stream creates a new child “version” of itself.
Now, when it comes to implementation, not all clients emit these, or implement their handling when received.
Rhino specific: somehow even selecting a layer in the layers menu triggers a layer change event, which messed things up. So Rhino just sends global updates. Caching layers on both sides of the client relieve pressure.
Children updates are only emitted, AFAIK (the older i get the less RAM i have for code i’ve written myself…), by the grasshopper clients, and consumed, again, only by them.
Safe to say, best way, at the moment, is to bet your money on Global updates. Clients that properly implement caching are not really affected.
Also, goes without saying, it’s something we’re cleaning up in the next version. These updates will be controlled by the server, rather than the clients.