There are lots of docs and info available for shoutcast/icecast servers and clients. Here’s a couple implementations in javascript:
https://github.com/livebassmusicrightnow/even-nicercast/blob...
https://github.com/TooTallNate/node-icy
WASM would be total overkill. The mpeg stream is readable natively in the browser — that’s how I served the client when I was running livebassmusicrightnow.