Well you could send a
clientinfocommand in order to obtain the latest state.
No, you literally can't. Once the client has left the server, that's it, game over,
clientinfo doesn't work anymore.
So to build up your own mirror easily.
Yes, but again, stale data.
The server only has not really any more information
No, of course the server has the client's state at the point in time when the client left the server.
Also, this whole argument completely ignores how annoying it is to work with an API that doesn't send you the information you need along with the event. You always necessarily increase the time required to perform actions, and cause more network load and the server's CPU load because clients have to actively ask for information every time
I'm not sure why I need to repeat myself here
Well I was a bit off topic previously ;)
a) stale data
Yes, but that's not a big deal.
You'll have to do any ways if you wan't to do anything with the client
b) that it's shitty API design if clients need to cache data to be able to use the API
Where's the argument in there?
Because we need to have some foundation that we agree on if we want to actually reason about good vs bad API design
Yes you're right there.
Would you agree that, in an event-based protocol, it's bad API design if you need to resolve to polling to respond to server-side changes?
Highly depends on what you need to poll.
I think especially information which are known have no need of being resend.
This (could) save a ton of bandwidth if applied everywhere.
Anyway, back on point:
The nickname "A", however, is a mutable property. There is no event to notify listeners about changes to that nickname
Does the normal TS3 query system not sending any
clientlistyou could receive the minimum amount of data to properly render the channel tree or a client list (at least what the we're thinking would be the minimum required data).
clientinfoyou're actually able to receive extra data which could be displayed in some kind of "Info" Window or in the TS3 client's case on the right side.