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 секунд не отвечать, если сказать нечего?

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

Спасибо!

Rise 04.10.2020 12:40

Цитата:

Сообщение от Was-Ja
как правильно такую задачу решить?

Возможно нужно постоянное соединение - WebSockets.
Цитата:

Сообщение от Was-Ja
мне надо послать GET команду и сервер на нее, например, будет 10 секунд не отвечать, если сказать нечего?

Если соединение не постоянное, то будет так, как вы реализуете, может не отвечать, целую вечность, может ответить немедленно, не дожидаясь результат, а может подождать, сколько нужно.
Цитата:

Сообщение от Was-Ja
я должен каждому юзеру дать свой порт?

Нет конечно.

Was-Ja 04.10.2020 15:56

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

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

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


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