Plus, all of this is requires support on the server end as well as the client.
A lot of people look at SocketIO as a client-side only library, but it's not. It has connection implementors written on the server side to support things like multiplexing over one channel.
- Events / actions as main abstraction.
- Support for degradation for old devices, browsers, corporate networks.
- WebSocket is not very good at multiplexing. One discrete TCP connection per socket (opposite direction of what HTTP/2 is going)
- Binary support inside JSON (`Buffer` etc)