Bad taste in programming languages is something that led Nostr to use WebSockets instead of normal TCP sockets in the first place, introducing huge bloatware layers on all sides.
But again, this choice also come from someone who believes there are no other version control systems than Git and no other Git hostings than GitHub...
I have been scratching my head about the WebSockets too. But here we are. And it seems to work fine.
It seems to work fine... on mainstream browser engines and hipster shitcoding platforms like NodeJS. Everyone who wants to live more frugally is left out.
I have yet to read the protocol(s) in-depth, but what would stop a relay from offering an alternative transport and falling back on WebSockets?