This is a chore-based server to provide long-polled metadata of an internet streaming station which uses the Icecast encapsulation to provide metadata (generally "artist - title" and album art URL).

Although web browsers can play internet streams, I haven't found any which accept, record, and make the Icecast metadata available. I knocked on the doors at the W3C and didn't really pick up any interest. So if you want your radio streaming web app to know about metadata, you have to do it off-browser.

Doing this in the browser would be much, much better.


This server accepts requests on /metadata/(which).json[?gen=<int>] and send back JSON of "key: value" of all the values received from (which)'s metadata. It fires up a stream to (which) and pulls metadata from it, when possible sharing its information across multiple clients.

If your "gen" is less than the current generation of information, your request is completed immediately with the current values. Otherwise your request is held (i.e., long polling) until the stream changes. Typically your web app is XHR'ing these, and updating the UI with the current information as it changes.