Первоначально написано главой Dev Rel Ably, Беном Гэмблом, и опубликовано на https://ably.com

В этой статье рассматривается Socket.IO версии 4, оцениваются некоторые из наиболее важных обновлений по сравнению с версией 3 — предлагаемые улучшения и способы миграции.

Краткое введение в Socket.IO

Socket.IO — это библиотека JavaScript для веб-приложений реального времени. Он обеспечивает двустороннюю связь между веб-клиентами и серверами в реальном времени и состоит из двух частей — клиентской библиотеки, которая запускается в браузере, и серверной библиотеки для Node.js.

Вообще говоря, Socket.IO отлично подходит для небольших проектов реального времени, но он не справляется со сложностью системы реального времени любого значительного масштаба.

Все, что вам нужно знать о Socket.IO

Релиз Socket.IO 4

Выпущенный 9 марта 2021 года, Socket.IO 4 представляет собой довольно значительное обновление — крупную новую версию, поэтому стоит углубиться в некоторые из наиболее заметных изменений, чтобы увидеть, что они означают для приложений реального времени в дикой природе.

Что нового в Socket.IO 4?

По сути, Socket.IO 4 — это обновление из трех частей. Наиболее значительными являются критические изменения на уровне API на стороне сервера.

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

Наряду с этим, есть ряд исправлений ошибок, включая настройку режима совместимости v2/v3 и восстановление поддержки модулей JS.

В третьей части добавлен ряд новых функций, наиболее важными из которых являются:

Поддержка типизированных событий

Не новость, что Typescript покорил сообщество JavaScript, поэтому добавление поддержки Types — это действительно положительный шаг. Детали можно посмотреть здесь, но по сути новое поведение выглядит так:

Поддержка типов интересна еще и тем, что демонстрирует, что это требование распространяется на все части стека, и, поскольку более фундаментальные библиотеки добавляют поддержку типов, это, несомненно, улучшит удобство сопровождения и долговечность проектов Node.JS.

неизменность

Это наполовину исправление ошибок, наполовину новая функция — но в любом случае это еще один положительный шаг вперед.

Вы можете увидеть детали здесь, но обновление довольно хорошо обобщается следующим образом:

До

После

Это обновление не затрагивает масштабируемость напрямую, но может дать некоторые преимущества, предотвращая случайные модификации и, следовательно, повышая стабильность кода. Вот более подробное исследование Масштабируемость Socket.IO.

Переход на Socket.IO 4

На базовом уровне миграция на Socket.IO 4 должна быть простой, поскольку сам протокол Socket.IO не обновлялся, поэтому клиент версии 3 сможет получить доступ к серверу версии 4 и наоборот. . Тем не менее, любой, кто уже использует режим совместимости с v2 по v3 и, следовательно, уже эффективно использует Socket.IO в двух состояниях, может обнаружить некоторые нежелательные сложности и неизвестные проблемы при переходе на v4. Время покажет…

Более серьезной проблемой является нарушение API, особенно в таких фундаментальных аспектах, как библиотека. Вот некоторые из проблем, которые могут возникнуть здесь:

  • Отсутствующая функциональность и непредвиденные проблемы: огромное количество элементов уровня реального времени, которые могут полагаться на функцию API, которая больше не присутствует или изменена, создает очевидные проблемы — потенциально некоторые функции могут прекратиться, и они будут отключены. потребуется время, чтобы отследить и исправить эти проблемы, что не идеально в мире, где реальное время действительно больше не является обязательным.
  • Подключаемые модули и языковая совместимость. Очевидно, что подключаемые модули, разработанные для работы с Socket.IO 3 и от которых может зависеть любое количество функций реального времени, могут нуждаться в обновлении для работы с версией 4. То же самое касается языков программирования, таких как Go и Java, и во всех случаях эти обновления находятся вне контроля пользователя, поэтому будет интересно посмотреть, сколько времени им понадобится, чтобы наверстать упущенное. Socket.IO и раньше бездействовал.

Вывод

Во всех смыслах это совершенно новый API, который содержит новостные функции и исправления ошибок, но также и риск, связанный с нарушением работы API. Будет интересно посмотреть, как все это разыграется, когда разработчики начнут копаться и адаптироваться к довольно большому набору изменений.

Что вы думаете об этой версии? Вы думаете о миграции? Поделитесь своими мыслями или задайте любые вопросы в Твиттере @bengamble7 или @ablyrealtime.

Первоначально опубликовано на https://ably.com 24 марта 2021 г.