Imagine you have some streaming computations running on a server. Client programs subscribe to real-time updates, so that they may visualise the computations for end users.
How do you share this constantly changing server state with all connected clients? Sending an entire snapshot after each change is very inefficient, so you must implement some sort of incremental updates – diffs.
But how do you generate these diffs on the server? And how do you represent them so the clients know how to apply them to update their own state?
We have been working on these problems for a long time while building a stock trading platform in Python. I’d like to show you a couple of open source libraries that we developed for this purpose, and share our experience with tracking state and propagating it to user interfaces running in other processes.