Реалтайм на WebSocket со сквозной типизацией: TypeScript, Bun, React, Point0

#Реалтайм #WebSocket #TypeScript #React #Бывает

Бывает так: есть фулстек проект, и в нём всё хорошо. Откуда-то есть сквозные типы (tRPC, генерация из OpenAPI), есть авторизация, есть основной функционал. А потом вы решаете добавить реалтайм: уведомление о новом посте в ленте, чат между пользователями, интерактивную доску. И появляется целый новый слой абстракций, в котором надо заново изобрести всё, что в проекте уже есть, только на новый лад. И дальше поддерживать две разные системы. В своём фреймворке Point0 я добавил четыре новых реалтайм-поинта (структурные единицы наравне со страницами, лэйаутами, квери, мутациями): канал, спейс, клиентский хэндлер, серверный хэндлер. На них собирается практически любая реалтайм-функциональность, кода получается мало, и читается он интуитивно. Эти поинты несут те же свойства, что и все остальные: код сервера и клиента живут в одном файле, компилятор вырезает клиентский код из серверной сборки, а серверный из клиентской типизация сквозная и выводится из дженериков самого фреймворка, без генераци

Бывает так: есть фулстек проект, и в нём всё хорошо. Откуда-то есть сквозные типы (tRPC, генерация из OpenAPI), есть авторизация, есть основной функционал. А потом вы решаете добавить реалтайм: уведомление о новом посте в ленте, чат между пользователями, интерактивную доску. И появляется целый новый слой абстракций, в котором надо заново изобрести всё, что в проекте уже есть, только на новый лад. И дальше поддерживать две разные системы.

В своём фреймворке Point0 я добавил четыре новых реалтайм-поинта (структурные единицы наравне со страницами, лэйаутами, квери, мутациями): канал, спейс, клиентский хэндлер, серверный хэндлер. На них собирается практически любая реалтайм-функциональность, кода получается мало, и читается он интуитивно. Эти поинты несут те же свойства, что и все остальные:

- код сервера и клиента живут в одном файле, компилятор вырезает клиентский код из серверной сборки, а серверный из клиентской

- типизация сквозная и выводится из дженериков самого фреймворка, без генерации типов

Похожие статьи

Российская газета
Российская газета

Как швейная фабрика в Мстиславле стала одним из индустриальных флагманов

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

Российская газета
Нутрициолог назвала продукты, которые теряют витамины при разогреве Чемпионат
Чемпионат

Нутрициолог назвала продукты, которые теряют витамины при разогреве

Повторный разогрев овощей действительно приводит к потере полезных веществ, но не все продукты одинаково уязвимы.

Чемпионат
CNews
CNews

ИТ-экосистема «Лукоморье» представила платформу ИИ-агентов «Око» для автоматизации бизнес-процессов

«Ростелеком» усиливает направление сервисов для бизнеса с использованием технологий искусственного интеллекта:...

CNews
Вышел второй трейлер хоррор-боевика «Натиск» со звездой «Андора» на русском языке Чемпионат
Чемпионат

Вышел второй трейлер хоррор-боевика «Натиск» со звездой «Андора» на русском языке

Кинокомпания «Вольга» опубликовала второй дублированный трейлер хоррор-боевика «Натиск».

Чемпионат
Аргументы и Факты
Аргументы и Факты

СК раскрыл убийство женщины, тело которой нашли в чемодане в 2011 году

В 2011 году житель Воскресенска во время рыбалки в озере обнаружил тело женщины в чемодане.

Аргументы и Факты
CNews
CNews

«Крайон» и «Колибри-АРМ» объединили управление уязвимостями и ИТ-инфраструктурой

Компания «Крайон», интегратор технологических решений для цифровой трансформации бизнеса, и разработчик системы...

CNews