Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать контроль отправки запросов по времени? (https://javascript.ru/forum/misc/82969-kak-sdelat-kontrol-otpravki-zaprosov-po-vremeni.html)

Signal 17.08.2021 23:43

Как сделать контроль отправки запросов по времени?
 
Всем здравствуйте.
Вопрос такой, как сделать, я алгоритма, что-то не въесжаю.
Есть массив потоков, которые отправляют результат своей работы на сервер.
Скажем, работает 100 потоков, но они не должны превышать 40 запросов, в 20 секунд.
т.е. я делаю отдельный класс, который получает время текущего запроса и не дает отправить результат на сервер, пока не проверит, не превышен ли лимит.
вот, что-то я тут не въеду, т.е. получается, мне нужна некая точка отсчета
вот, собственно такой вопрос.
мне реализация не нужна, мне алгоритм действий, поможите люди добры!

рони 18.08.2021 07:52

Цитата:

Сообщение от Signal
который получает время текущего запроса

который получает общее количество запросов, и если оно меньше 40, отправляет запрос и увеличивает счётчик, иначе в очередь, через 20 секунд счётчик запросов обнуляется автоматически.

Vlasenko Fedor 18.08.2021 08:19

Signal,
насколько я правильно понял вам нужен промежуточный обработчик
Для сервера (middleware) для вашего роутинга
Пример https://github.com/Nullmage/express-throttle
Для клиента throttling

voraa 18.08.2021 08:30

100 потоков где? В браузере?
Что такое поток? Webworker?

А что делается с неразрешенными сообщениями? Они просто игнорируются или ставятся в очередь и отправляются, когда можно?

Vlasenko Fedor 18.08.2021 08:36

voraa,
https://habr.com/ru/company/zerotech/blog/339900/

voraa 18.08.2021 08:53

Vlasenko Fedor,
А при чем тут Node? Разве вопрос про работу сервера?
Цитата:

Сообщение от Signal
Есть массив потоков, которые отправляют результат своей работы на сервер.

Цитата:

Сообщение от Signal
и не дает отправить результат на сервер, пока не проверит, не превышен ли лимит.


Alexandroppolus 18.08.2021 08:58

Цитата:

Сообщение от рони (Сообщение 539448)
который получает общее количество запросов, и если оно меньше 40, отправляет запрос и увеличивает счётчик, иначе в очередь, через 20 секунд счётчик запросов обнуляется автоматически.

кейс:
1) делаем первый запрос на отметке t=0, включается таймер
2) 39 запросов на интервале (10 ... 20)
3) на t=20 счетчик сбрасывается
4) 40 запросов на интервале (20 ... 30)

итого на 20-секундном интервале (10 ... 30) у нас 79 запросов.

автору топика стоит уточнить, допустимо ли такое.


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