I mentioned the other day I was playing with yesod-websocket, and my method was taking some existing Handler functions and adding websocket "commands" that map to those requests, and updating the Angular app talking to Haskell backend to use websockets for those specific requests.
I was surprised to see >100% increase in request time for a GET request vs a websocket message.
It's not a perfect comparison since I am passing slightly different json and parsing it differently.
That being said, here is my attempt to succintly describe what is going on:
I have a function