One thing that I've never understood is why websockets instead of server sent events?
With deployments of HTTP/2 increasing, I think we'll see greater adoption of server sent events. At the time of writing, HTTP/2 and WebSockets are two incompatible standards. For non-latency sensitive applications (i.e. not games) it is very easy to implement a WebSocket like interface over HTTP/2 using SSE (server -> client) and POST requests (client -> server) with very little overhead (thanks to HTTP/2's multiplexing).
Another factor is that most apps using a socket-ish connection tend to run almost all traffic over the socket as opposed to just "push" traffic. This can make sense if the exchanges aren't very resource-oriented compared to a REST API.