@available

Как можно ограничить скорость запроса в js?

Мне нужно эмулировать медленное соединение для запроса, например со скоростью 64 Кб в сек, правда, я не уверен, реально ли это вообще. То есть, наверное, так: открываешь соединение и отправляешь заголовок по частям, то же самое с получением данных. Я планирую запускать код в консоли веб-браузера. Я знаю, что можно использовать DevTools, но программно в моей среде (ZehhoPoster) нет возможности получить доступ к этому инструменту. ChatGPT не может реализовать задачу, я и менял описание и использовал разные их версии. Результат всегда один, код не выполняет поставленую задачу.
  • Вопрос задан
  • 183 просмотра
Решения вопроса 2
Aetae
@Aetae Куратор тега JavaScript
Тлен
Если у тебя по капотом хром, то наверное ты можешь использовать fetch в котором у Request body - это ReadableStream, растянув таким образом запрос настолько - насколько надо. Но это всё же не совсем то же самое что просто медленный запрос.
Полноценного же низкоуровневого контроля над запросом никто тебе из js не даст.
Ответ написан
zkrvndm
@zkrvndm
Архитектор решений
В прошлом году Google Chrome и все Chromium браузеры получили апдейт, теперь при выполнении POST-запросов можно управлять исходящим потоком, в том числе передавать данные с нужной вам скоростью.

https://developer.chrome.com/articles/fetch-stream...

Chat GPT этого не знает, так как его базы данных ограничены сентябрем 2021.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@available Автор вопроса
Дабы не поднимать новую тему, хотелось бы понять есть ли решение для задержки на получение? Выше 2 варианта для пост запросов, мне же понадобилось и для гет запроса.

Я честно и упорно и со всех сторон подходил к чат жпт, но он ничего вменяемого не смог предложить, все его ответы что то в стиле этого

const url = 'https://site. com';
const chunkSize = 500; // Number of bytes to read in each chunk
const interval = 100; // Interval in milliseconds between each chunk

fetch(url)
  .then(response => {
    const reader = response.body.getReader();
    let bytesRead = 0;

    function readChunk() {
      reader.read()
        .then(({ done, value }) => {
          if (done) {
            console.log('Finished reading the response.');
            return;
          }

          const chunk = value.slice(0, chunkSize);
          bytesRead += chunk.length;

          // Process the chunk as needed
          console.log(`Received ${chunk.length} bytes:`, chunk);

          // Schedule the next chunk read
          setTimeout(readChunk, interval);
        })
        .catch(error => {
          console.error('Error reading the response:', error);
        });
    }

    // Start reading the response in chunks
    readChunk();
  })
  .catch(error => {
    console.error('Error fetching the URL:', error);
  });
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
21 нояб. 2024, в 19:31
500 руб./за проект
21 нояб. 2024, в 19:28
200000 руб./за проект