Мифы про WebSockets

– Это просто какой-то позор
Собачье Сердце

Интро

Многие люди, которые хотят попробовать N2O, пишут мне о том, что их клиенты якобы сомневаются в том, что WebSocket протокол достаточно матурный и поддерживается браузерами и ИТ сообществом. Просят помощи в разъяснении, что к чему.

Я лично никого не заствляю писать на Эрланге и использовать Вебсокеты, так как и так клиентов у меня больше чем я успеваю обслуживать. Но ко мне обратились очень влиятельные люди, и очень корректно попросили помощи в разяснении этого вопроса.

1. WebSocket's дырявый, я читал в инетренте, что там был секюрити Issue, не помню какой, но мне говорил об этом очень влиятельный человек.

Ни одна не технология не обходилась без секюрных заплаток. Люди которые обсуждают это, как правило приводят ссылки на эксперементальные версии протоколов HyBi,

и почему-то никогда не приводят официальный RFC документ 6455, дата выпуска которого на год младше сообщений об уязвимостях.

2. Я читал что в Зимбабве, стране стратегическом партнере России, вебсокеты не проксируются у мобильного оператора ZIMBCELL

Такое могло наблюдаться только в том случае, если в каких-то дешевых сетях, криворукие админы, не смогли разобраться в топологии сети. Конечно при появлении Вебсокетов нужно было качать nginx модули, впиливать их пересобирать, но сейчас

WebSocket прокси работает с nginx, HAProxy из коробки, я не знаю ни одного известного сетевого продукта, где бы не было вебсокетов. Если вы знаете какой-то, расскажите мне.

3. Я слышал что WebSockets работают только по TLS, а не по TLS не работают

Это связано с предыдущим мифом, так как некоторые сети могут что-то непроксировать, то люди, чтобы обойти эту проблему а не написать письмо на NIC, устанавливают wss:// по TLS, и естественно по шифрованому трафику ничего не проксируется и якобы обходтся мифическое ограничение.

При этом не приводятся доказательства случаем неработоспособности Вебсокетов по зимбабвийским и приднестровским каналам.

4. Если я включу TLS, чтобы работали вебсокеты, все будет очень медленно

nginx умеет терминацию SSL, SPDY работает только по TLS, фейсбук перешел на TLS, гугл и все остальные, у вас 80% приложений в мобилке работает по TLS. Но при этом люди продолжают думать что SSL это меделнно, нехватает ресурсов, потому-то что когда-то было прочитано что 1.66MHz процессор с последней OpenBSD на VAX генерировал PKI ключи 2 дня.

Я настоятельно рекомедую использовать TLS во всех приложениях, также рекомендует Илья Григорик, и это не связано с неработающими сетями в Приднестровье и медленными датацентрами ДНР и ЛНР. А связано с тем, что это позволит обеспечить хоть какую-то защиту данных ваших пользователей и кукисов.

5. Я слышал что хайп по вебсокетам утих

Хайп утих и по поводу дифференциального исчисления бесконечно малых, и быстрого преобразования Фурье. Если вы пойдете на HN то я бы не сказал что WebSocket хайп утих, возможно вцелом локальное снижение есть, но глобально технология работает даже на SDPY и будуем HTTP/2.

Заявления о том, что Вебсокеты прекратят свое существования со дня на день примерно соотвествует заявления о том что Виндовс загнется и Майкрософт станет банкротом. Впрочем это объект обсуждения другого калифорнийского мифа, просто хипстеры Сан-Франциско не в курсе что Haskell родился в Microsoft и благодаря Microsoft.

6. Никто из больших компаний не используют вебсокеты.

Да, это правда, Google+, Facebook все это работает на XHR полинге. Но это не связано с вебсокетами, а с тем, что весь джаваскрипт этого говна генерируется фремворками, типа GWT которые были написаны задолго до Вебсокетов. Эти компании страдают от своей инертности, но при этом эти же компании проводят пиар компании

по популяризации SPDY, WebSockets и быстрого интернета, троля себя же и сайти монстры типа NY Times и Bloomberg. Коменты которых сервятся по XHR. Можно перечислять десятки стартапов которые использует WebSockets включая Disqus и другие, но это все делать бессмысленно, для тех кто слеп.

7. Никто не предосталяет графики нагрузочного тестирования вебсокетов.

Это связано с очень плохим качеством утилит нагрузочного тестирования. Единственная утилита, написанная на С, которая может создать рельный шторм вебсерверу которой я тестировал N2O, это wrk, но она не поддерживает вебсокеты.

Для WebSockets существует аналогичная wrk утилита — tcpkali, с помощью которой вы легко сможете завалить свои серваки на node.js и Python.

8. Я слышал что вебсокеты медленные.

Тут тоже есть картинки. Эта картинка говорит о том, что для бизнес приложений на N2O можно рисовать мультики, которые будут показываться как видео, 50 кадров секунду,

причем сюда входит не только доставка сгененерированных HTML/JS форм вместе с валидациями и всем, что нужно энтерпрайзу по вебсокетам, но также сюда входит время рендеринга DOM в браузере.

Тут рендерится 33 формы, Your website is faster than 100% of all tested websites Здесь как видно 28 запросов! Без минификации и без компрессии!

9. Докажи мне, что я должен испльзовать WebSockets

Когда я начинал заниматься разработкой N2O, WebSockets их еще не было, были экспериментальные версии протоколов HyBi. Я почитал у Джо Армстронга в блоге, что Вебсокеты это круто, и ничего не знаю о вопросе решил поставить весь свой бизнес на эту технологию.

Пока остальные писали свои REST микро фреймворки (которых у нас тоже в изобилии), патча свои рельсы, мы вкидывались в технологию, которая еще не поддерживалась браузерами.

Прошло 5 лет и ситуация такая как на картинке. У меня успешная компании много достаточно больших клиентов, в том числе таких консервативных как банки с десятками миллионов клиентов,

игровые компании ААА класса, и просто пользователи N2O, которые используют его для своих проектов меньшего ранга.

10. У нас умный сервер, мы его настроили чтобы он рубил вебсокеты и у нас не работают вебсокеты.

Поэтому вебсокеты говно, потому что у нас они не работают

11. Я СТО очень большой компании и протестировал ваши вебсокеты

На сайте websocket.org/echo.html и там у меня вебсокеты не работают на 80 порту!

Для таких людей мы сделали N2O промо сайт, skyline.synrc.com/chat там вы можете попробовать зайти с любого устройства и любой сети и убедиться, что вебсокеты у вас работают на 80 порту.

А websocket.org писали криворукие хипстеры из Сан-Франциско.

Резюме

Что я хочу сказать. Не используйте вебсокеты, пишите на XHR, используйте whatever you fucking want только не говорите больше, что вы не читали этот текст.

Этот текст написан для лодей у кого есть мозг, чтобы услышать friendly advise.