upvote
If you have control over the HTTP server, a different technique is to set "refresh" in the response header[1], which makes the client fetch new animation frames periodically. This is the technique used in a 2013 IOCCC entry to show a continuously updated clock that's rendered as PNG[2].

[1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/...

[2] https://www.ioccc.org/2013/mills/index.html

The "Refresh" header is encoded backwards on this line:

https://github.com/ioccc-src/winner/blob/619f554bbdb19e5003a...

reply
And I did something similar to steam live video via an infinite gif: https://github.com/jbochi/gifstreaming#live-video-streaming-...
reply
Interesting that people are making hacks of PNG to do animations, yet there's also APNG sitting over there saying "Hey I exist!"
reply
You don't even need a hack, there's built-in support for this.

https://en.wikipedia.org/wiki/Motion_JPEG

I've been here screaming "Motion JPEG EXISTS and is well supported in browsers" the entire time those gif hacks were popular. I've built a bunch of cool stuff with it.

https://github.com/donatj/mjpeg-php/blob/master/mjpeg.php

https://github.com/donatj/imgboard/blob/master/main.go

The PHP example here is an illustration of how easy it is to pull off, and the Go example is part of a JavaScript-free multiuser drawing board.

reply
We even have proper video codecs like h264!
reply
Sure, but most sites strip the animation out of APNGs while still allowing GIFs, which is frustrating.
reply
I did this once, 20 years ago, with an animated GIF to add a live streaming air quality layer to a map application at work. The image itself was rendered using Java2D. I had a version I was working on that used JOGL to make gradient blobs instead of point clouds, but I couldn't get the server admin to install the OpenGL driver to get it to work.
reply