Server Sent Events is an interesting middle way.
Discussion
I've used that in multiple projects, it's great. If I remember correctly my first Nostr prototype used it, but I think I thought websockets would be simpler and more generic/versatile in the end.
Wait, I know you, you're that guy that writes a ton of interesting things in Clojure.
I can only wonder how much worse it would be if this was made with HTTP polling.