Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / HTML, JavaScript, VBScript, CSS Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
 Постоянное создание таймера в javascript  [new]
stim644
Member

Откуда:
Сообщений: 55
Здравствуйте. Подскажите пожалуйста, а правильно ли создавать постоянно таймер (каждые 200 милисекунд). Мне нужен таймер, а не интервал именно для того, чтобы запросы шли один за другим. Т.е. отправил запрос, получил ответ, следующий.

Вот код для понимания:
setTimeout(startVideo, 150);

function startVideo() {
      if(!video) {
        return;
      }

      $.ajax({
        type: "POST",
        dataType: "HTML",
        response:'text',
        url: "videoClient.htm",
        success: function(data) {
          if(data!='') {
            $("#target").attr("src",data);
          }

          setTimeout(startVideo, 150);
        }
      });
    }
6 янв 19, 13:43    [21779098]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
stim644
Member

Откуда:
Сообщений: 55
Меня интересует не будет ли каких то утечек памяти или нагрузки на процессор чрезмерной от такого создания. Спасибо.
6 янв 19, 13:45    [21779100]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 15612
stim644,

это нагрузка на сервер, если его будут бомбить запросами каждые 200мс десятки клиентов.
6 янв 19, 13:56    [21779103]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
hVostt
Member

Откуда:
Сообщений: 15390
stim644,

с интервалом задача также решается, нужно проверять значение флага, который взводится перед отправкой.

но таки непонятно, зачем это? для реализации чатов, как делали в 2000-ых годах? Картинка с другого сайта.
7 янв 19, 02:44    [21779312]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5939
stim644,

Движок JavaScript использует однопоточную модель (single-thread). Фрагменты кода (задания), подлежащие выполнению, помещаются в очередь заданий. Задания последовательно выполняются одно за другим. В каждый конкретный момент времени может выполняться только одно задание. Вызов функции setTimeout() приводит к тому, что вызов обозначенной в её первом параметре функции по истечении заданного интервала так же будет помещён в очередь заданий. Если выполнение функции занимает ощутимое время, то web-приложение "зависает", т.к. пока это задание не будет завершено, другие задания не смогут начать работу.

Возможно вам имеет смысл создать отдельный Worker и подобного рода взаимодействие с сервером выполнять в нём. Worker работает в отдельном потоке (thread), т.е. его код выполняется параллельно с теми заданиями, которые находятся в очереди заданий. Каждый раз, как на стороне кода, выполняемого в Worker происходит отправка сообщения (как правило - это происходит посредством функции postMessage()) - на стороне кода, создавшего экземпляр Worker планировщик заданий помещает в очередь заданий функцию, которую вы предварительно назначили свойству onmessage. Передаваемые данные из/в Worker содержатся в свойстве data. Для упрощения, можно выполнить декомпозицию свойства:

myWorkerInstance.onmessage = ({data}) => {
  /* здесь ваш код обработки результата, полученного с сервера */
};


Если вы никогда ранее не работали с Web Workers - это не беда. Механизм передачи данных в Worker и извлечения их обратно - один и тот же: postMessage/onmessage. Это сильно упрощает кривую обучения. Научиться вполне уверенно использовать Web Worker можно за день: например, по этой книге (обратите внимание на количество её страниц - 60). Собственно по ней я и изучал Web Workers.
7 янв 19, 12:53    [21779366]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
Zoria
Member

Откуда:
Сообщений: 14150
hVostt
stim644,

с интервалом задача также решается, нужно проверять значение флага, который взводится перед отправкой.

но таки непонятно, зачем это? для реализации чатов, как делали в 2000-ых годах? Картинка с другого сайта.

кстати. а как нынче модно делать чаты?
7 янв 19, 18:07    [21779519]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 15612
Zoria
кстати. а как нынче модно делать чаты?
websocket
7 янв 19, 18:10    [21779520]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
stim644
Member

Откуда:
Сообщений: 55
вадя
Zoria
кстати. а как нынче модно делать чаты?
websocket

Тут я делаю не чат, а пересылаю видео) Каждые 200 милисекунд и я кстати обнаружил, что отправка base64 данных вместо отправки blob через websockets гораздо легче) Не знаю правильно это или нет =)

Т.е. получается создание таким образом таймера сильно грузит процессор?
7 янв 19, 21:31    [21779622]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 15612
stim644
что отправка base64 данных вместо отправки blob через websockets гораздо легче)
единственно base64 на 33,3% длиннее .....
и у тебя не ws , а ajsx....
7 янв 19, 21:46    [21779629]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26479
stim644,


что значит грузит? Вам же написали про однопоточность, вот и думайте.
7 янв 19, 21:46    [21779630]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26479
stim644,

и что означает "гораздо легче"?
7 янв 19, 21:52    [21779635]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
stim644
Member

Откуда:
Сообщений: 55
skyANA
stim644,

и что означает "гораздо легче"?


Я сравнил вес строки base64 помещенной в файл и blob (точнее саму картинку на выходе). Может это конечно не корректно)
Но факт остается фактом, как только я сменил с вебсокетов на ajax, то картинка стала шустрее показываться...
7 янв 19, 22:02    [21779639]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
stim644
Member

Откуда:
Сообщений: 55
По поводу workerа спасибо, почитаю
7 янв 19, 22:03    [21779640]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 15612
stim644
Я сравнил вес строки base64 помещенной в файл и blob (точнее саму картинку на выходе). Может это конечно не корректно)
base64 меньшего объёма?
7 янв 19, 22:04    [21779642]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 15612
stim644,

что за сравнение мягкого с солёным?
7 янв 19, 22:06    [21779646]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
hVostt
Member

Откуда:
Сообщений: 15390
stim644
Тут я делаю не чат, а пересылаю видео


WebRTC не хотите попробовать?
8 янв 19, 01:51    [21779707]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
hVostt
stim644
Тут я делаю не чат, а пересылаю видео


WebRTC не хотите попробовать?
+1 аффтар, поищите готовый протокол повыше http.
8 янв 19, 13:56    [21779859]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
stim644
Member

Откуда:
Сообщений: 55
вадя,

да, наверно не правильно посчитал)
8 янв 19, 18:34    [21780041]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
stim644
Member

Откуда:
Сообщений: 55
hVostt,

По поводу web rtc я думал и даже реализовал первую версию. Но по некоторым причинам не устроило.
А вообще разве websocket дает меньшую нагрузку на сервер, чем ajax запросы пулять?
8 янв 19, 18:41    [21780044]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 15612
stim644
А вообще разве websocket дает меньшую нагрузку на сервер, чем ajax запросы пулять?
смотря для чего. если просто дергать ajax-сом сервер для выяснения появились ли данные, или просто их получать их через ws при поступлении новых данных - то разница заметная.
ws бинарные данные передавать, а ajax?
8 янв 19, 19:01    [21780051]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
stim644
hVostt,

По поводу web rtc я думал и даже реализовал первую версию. Но по некоторым причинам не устроило.
А вообще разве websocket дает меньшую нагрузку на сервер, чем ajax запросы пулять?

А где у вас в треде требуемая нагрузка в попугаях?
8 янв 19, 21:38    [21780102]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
hVostt
Member

Откуда:
Сообщений: 15390
stim644
hVostt,

По поводу web rtc я думал и даже реализовал первую версию. Но по некоторым причинам не устроило.
А вообще разве websocket дает меньшую нагрузку на сервер, чем ajax запросы пулять?


Технологий для потокового видео вагон: HLS, MSE-LD, MPEG-DASH, RTMP, HTTP MPEG-TS, HDS

Зачем тут вебсокет? Ну может если вы хотите видео конференцию со звонками, чатом, блекджеком и ш. Для видео-то нафига? Вы там серию джипегов, что ли, отдаёте? Ничего не понимаю.
9 янв 19, 03:27    [21780194]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
hVostt
Member

Откуда:
Сообщений: 15390
stim644
А вообще разве websocket дает меньшую нагрузку на сервер, чем ajax запросы пулять?


Если в отрыве от постановки задачи, то: зависит от...
9 янв 19, 03:28    [21780195]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
Изопропил
Member

Откуда:
Сообщений: 31115
вадя
ws бинарные данные передавать, а ajax?

в какая разница бинарные или текстовые?
9 янв 19, 08:57    [21780261]     Ответить | Цитировать Сообщить модератору
 Re: Постоянное создание таймера в javascript  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 15612
Изопропил
вадя
ws бинарные данные передавать, а ajax?

в какая разница бинарные или текстовые?

в трафике - 33.3%
9 янв 19, 09:28    [21780273]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
Все форумы / HTML, JavaScript, VBScript, CSS Ответить