@DarkLynx91

Одностраничное приложение только на websocket, делал кто?

Идет этап подбора технологий для реализации сервиса который подразумевает необходимости внедрения RealTime.
Front-end планируется писать на AngularJS.
Для backend выбираем между двумя вариантами:
1) AngularJS получает данные по API. API сервер (назовем его так) написан на python(django) для realtime поднимаем рядом NodeJS с socket.io
2) Безумная, но интересная и забавная идея реализовать весь backend на NodeJS исключительно по websocket (socket.io). Никаких Http запросов к API, только websocket(socket.io).

Если с 1 всё довольно очевидно, то вот насчет второго есть много неуверенности.
Так вот вопрос в том, реализовывал ли кто то backend по 2 схеме и с какими подводными камнями сталкивался или это совсем бред?

P.S. Вопрос пишу потому что интересна вторая идея, в голове всё замечательно и прекрасно, но что-то настораживает, вот решил проконсультироваться так сказать.
  • Вопрос задан
  • 2199 просмотров
Решения вопроса 1
Staltec
@Staltec
Node.js разработчик
Абсолютно нормальная идея. У меня по схеме №2 целый оконный завод автоматизирован. Использовался socket.io. Архитектура приложения конечно отличается от стандартного SPA на AJAX запросах, но зато RealTime синхронизация состояний моделей на всех клиентах и скорость обмена данными (нет потерь на установление соединения) очень даже радует. Работает это всё надёжно.

UPD Вот тут я писал об этом подробнее: NodeJS для разработки проектов
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Начнем с того что вы сейчас просто выбираете транспорт, либо HTTP либо WebSockets. С концептуальной точки зрения разницы особо нет. В плане производительности - все упрется в выбранную архитектуру.

По сути, websockets будут продуктивнее работать (если мы не берем в расчет HTTP2), но вам придется реализовывать мультиплексирование запросов/ответов, как-то писать свой протокол поверх и словом куча гемороя. При том что профита по производительности в сравнении со старым добрым HTTP + Keep Alive не так много.

Для реалтайма - да, конечно же websockets наилучшее решение, но использовать его целиком как транспорт - сомнительное занятие. С другой стороны встречаются уже готовые реализации транспорта на websockets где проблемы, которые я перечислил, уже решены (возможно не полностью но с большего).

p.s. пробовал делать все на websockets но без мультиплексирования, у меня небыло необходимости разруливать конкурентные запросы или паралельные, все шло через очередь да и задачи были очень простые. А почему был выбран websockets - потому что всеравно использовался а для одного метода еще API писать было лень.
Ответ написан
@wing_pin
Люблю сгущенку и функциональное программирование
Используем Autobahn. Пока еще рано говорить о каких-либо результатах, но в целом впечатление очень хорошее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы