Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как быстро получить информацию о изменении статуса с сервера? (https://javascript.ru/forum/events/81121-kak-bystro-poluchit-informaciyu-o-izmenenii-statusa-s-servera.html)

Was-Ja 03.10.2020 21:24

Как быстро получить информацию о изменении статуса с сервера?
 
Добрый день,

есть фронтенд на JS + html + webgl, и бекенд на С + сокетах, без сервера, в лоб, ибо живет в реалтайме на ембеддед линуксе. И то и другое - пишу сам, то есть могу подстроиться.

Еще важный нюанс - бекенд на сервере может одновременно обслуживать несколько юзеров.

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

Но бекенд иногда хочет быстро сообщить, что надо что-то там в приборе сделать.

Сейчас реализовал так, что раз в секунду посылаю бекенду команду GET и если бекенд послал в ответ специальный статус, то уже начинаю реагировать.

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

Если делать запрос раз в 10-20-30 секунд, трафик будет меньше, но реакция на изменение состояния в приборе может быть с запозданием.

Скажите, пожалуйста, как правильно такую задачу решить?

Скажите, пожалуйста, правильно ли я мыслю, что мне надо послать GET команду и сервер на нее, например, будет 10 секунд не отвечать, если сказать нечего?

Скажите, пожалуйста, а будет ли нормально работать эта конструкция, если если на тот же бекенд-сервер придет еще одна команда от другого юзера на тот же порт, или в этом случае я должен каждому юзеру дать свой порт?

Спасибо!

Was-Ja 04.10.2020 15:56

Спасибо большое за ответы!

Про WebSockets - думал, но пока на бекенде не смог быстро поднять, поэтому не смотрел в эту сторону. Похоже надо посмотреть в эту сторону повнимательнее. Скорей всего первую версию сделаю через не постоянное соединение, а потом попытаюсь переползти на вебсокеты.

Про порты - да, ошибся, действительно можно одним портом обойтись, спасибо!


Часовой пояс GMT +3, время: 16:14.