Первоначально написано главой Dev Rel Ably, Беном Гэмблом, и опубликовано на https://ably.com
В этой статье рассматривается Socket.IO версии 4, оцениваются некоторые из наиболее важных обновлений по сравнению с версией 3 — предлагаемые улучшения и способы миграции.
Краткое введение в Socket.IO
Socket.IO — это библиотека JavaScript для веб-приложений реального времени. Он обеспечивает двустороннюю связь между веб-клиентами и серверами в реальном времени и состоит из двух частей — клиентской библиотеки, которая запускается в браузере, и серверной библиотеки для Node.js.
Вообще говоря, 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 г.