Хочу сделать веб приложение на Vue + Vuex с реал тайм обновлением данных, копаю в сторону vue + websocket, принцип работы понятен, но опыта работы с websocket еще не было,
Описания веб-приложения в общих чертах:
Бэкенд забирает данные с 1С, формирует как надо, записывает их в БД и отправляет на фронт. Пользователи всячески работают с этими данными в виде таблиц и при любом изменении у всех пользователей происходит перерисовка DOM + в каких-то случаях они получают уведомления.
Возникает вопрос , если я открываю соединения для общения с сервером, допустим канал , который следит за обновлением данных, то как быть с остальными запросами (авторизация/удаление/редактирования/создания данных), которые реализованы с помощю RESTfull , это нормально что в приложении будет использоваться 2 протокола? Или весь REST тоже переносят в TCP ?
И еще один вопрос, на просторах интернета конечно искал примеры и натыкался на несколько, где на фронте поднимают сервер на node.js , например express, и там регистрируют socket, а само приложение написано на vue.js, вот тут я не много не понимаю, для чего это делается, это как промежуточный сервер между фронтом и бэком получается? Без него не получится работать ?
Стек технологий на которых пишется приложение:
frontend: Vue.js, Vuex
backend: Kotlin + Spring Boot, PostgreSQL 9.6
Тут есть разные мнения. Я считаю что два протокола это нормально потому что эффективно (не нужно тратить время на переписывание) и не вредно. Нюансы возможны только если у тебя распределенный бекенд: несколько серверов, стоящих за прокси.
Если бы я писал с нуля, пытался бы все решить через вебсокеты. Да и ты всегда успеешь перенести вызовы REST-а на вебсокеты.
Вебсокеты это протокол который использует HTTP протокол чтобы установить соединение. Чтобы установить вебсокетное соединение с сервером клиент должен специальным образом постучаться на http сервер, и сервер ответит что умеет в вебсокеты. Поэтому для работы вебсокетов нужен http сервер (явный или неявный).
Все эти примеры в интернете предполагают что твой http сервер написан на экспрессе. А в твоей ситуации у тебя уже есть http джавовый сервер. Так что если у тебя уже есть spring boot и вебсокетный ендпоинт, то тебе экспресс не нужен.