Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Поддержание соеденения с сервером (csp) / 8 сообщений из 8, страница 1 из 1
07.08.2014, 11:19
    #38714740
DKspider
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержание соеденения с сервером (csp)
Доброго времени суток.
При разработке с использованием csp возникла следующая ситуация:
вызываю из JS метод в асинхронном режиме #call(ep.utils.JSON.getCalcResCall(tCo,duo))#; по окончанию работы данный метод вызывает перерисовку части страницы следующим образом: &js<
  var listOfResult=(jQuery.parseJSON('#(res)#')).OutputList;
  showResList(listOfResult[0]);

  RemoveLoad($('.wrapper'));
 >Метод достаточно времязатратный и естественно со временем вызывает ошибку
Код: plaintext
"Unexpected status code, unable to process HyperEvent: Gateway Time-out (504)".

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

Хотелось бы узнать, существуют ли программные трюки, которыми этого можно избежать?

Например, можно ли во время работы на сервере данного метода посылать пустые запросы, для поддержания коннекта?
...
Рейтинг: 0 / 0
07.08.2014, 11:52
    #38714766
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержание соеденения с сервером (csp)
DKspiderНапример, можно ли во время работы на сервере данного метода посылать пустые запросы, для поддержания коннекта?Это бесполезно, все они встанут в очередь и будут ждать пока выполнится первый запрос. Если сессия не хранимая то просто будут висеть на сервере в ожидании блокировки на сессию, т.к. сессия уже занята другим процессом. Если сессия хранимая то шлюз, зная что процесс еще работает поставит его в очередь.

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

так же еще есть вариант с использованием WebSockets (начиная с 2014.1), в данном случае соединение является постоянным пока сокет открыт в браузере, и сервер на один запрос может отправлять ответ порциями по мере готовности
...
Рейтинг: 0 / 0
07.08.2014, 13:17
    #38714848
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержание соеденения с сервером (csp)
DKspiderХотелось бы узнать, существуют ли программные трюки, которыми этого можно избежать?

Например, можно ли во время работы на сервере данного метода посылать пустые запросы, для поддержания коннекта?
Нужно не сервером клиента шубуршить... А пусть сам клиент обращается к серверу с вопросами типа "как там дела".
...
Рейтинг: 0 / 0
07.08.2014, 13:28
    #38714857
DKspider
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержание соеденения с сервером (csp)
krvsa,
Пытался сделать что-то подобное через
Код: javascript
1.
2.
3.
4.
...
interID = setInterval(#call(ep.utils.JSON.getConn()#,30000);
#call(ep.utils.JSON.getCalcResCall(tCo,duo))#;
...


В этом то собственно и проблема. Как написал DAiMor данные запросы с клиента просто встанут в очередь, даже если их вызов был асинхронным. Видимо все-таки придется пытаться делать через WebSockets.
...
Рейтинг: 0 / 0
07.08.2014, 20:52
    #38715417
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержание соеденения с сервером (csp)
DKspider , выкинь ты тот КАЛ...
Делай обычный Ajax-запрос. Полученый ответ можно обрабатывать как обычный прогресс...
...
Рейтинг: 0 / 0
07.08.2014, 21:30
    #38715432
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержание соеденения с сервером (csp)
DKspider, предлагаю такую схему:
Клиент вызывает сервер для запуска длительного по времени исполнения метода
Сервер запускает метод в отдельном процессе ( JOB ) и сразу отдает клиенту некий идентификатор запущенного процесса ($ZCHILD)
Клиент периодически опрашивает сервер (ajax, webSocket) о состоянии процесса, при определенном ответе прекращает опрос
...
Рейтинг: 0 / 0
08.08.2014, 08:12
    #38715592
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержание соеденения с сервером (csp)
doublefint , поддерживаю.
...
Рейтинг: 0 / 0
23.09.2014, 19:30
    #38755190
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержание соеденения с сервером (csp)
DKspider ,

Можете посмотреть пример на ZEN ( 16154583 , вариант №2) запуска фоновой задачи с выводом прогресса её выполнения и переделать его на CSP.
Под капотом ZEN используется как раз описанная doublefint схема работы.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Поддержание соеденения с сервером (csp) / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]