Можество софта использует свой протокол для обмена сообщениями между клиентом и сервером. Если на секунду отложить в сторону UDP протоколы, то практически все из них отправляют какие-то структуры (свои, Protobuf, Thrift, etc) по TCP сокету.
Почему бы им не перейти на веб-сокеты?
1) Проходимость возрастает, например всякие веб-прокси
2) Оверхед только при установлении соединения, потом минимальный оверхед на delimiting, который обычно и так нужен.
3) Появляется доступ не только из websocket клиента, но и с браузера напрямую. Например если по веб-сокету идет json или protobuf, то все становится совсем элементарным. Поддержка json родная, есть компилятор proto в JS
4) Расширяя пункт 3) у нас получается низкоуровненый кросс-языковой протокол. Так как websockets, их delimiting и proto внутри умеют почти все популярные языки.
5) SSL делается не сложнее чем для обычных сокетов, ws:// превращается в wss://. Браузеры тоже умеют, даже с клиентской аутентификацие по сертификату
Какие недостатки?