I was frustrated by that as well. In the end, I actually found a solution that was surprisingly easy and works well. I'm about 90% sure it was https://github.com/billstclair/elm-websocket-client, although it's been a few weeks and I can't check right now.