I while ago I wrote something similar with a friend for fun. Redis, ServerSentEvents and Go: <a href="https://github.com/vivienschilis/eddy/" rel="nofollow">https://github.com/vivienschilis/eddy/</a><p>It's not so well documented but it's practically the same except that it uses ServerSentEvents on the client and has buffers so no message is ever dropped. Each messages contains the payload, a TTL and a channel size. The TTL is used to expire a channel automatically and the channel size can be used for example to create 1-deep channels for updating values like progress.