UniGui. EndLess Session

Данная статья посвящена сессиям в UniGUI и о том как их продлить до бесконечности либо до отключения пользователем. Этот пример основан на одном из Demo, которая идет вместе с проектом. Если ничего не сделать, то по истечении SessionTimeout на сервере, мы получим вот такое сообщение на клиенте

2

Скажу честно, механизм сессий в UniGUI для меня до сих пор остается загадкой. Я задал вопрос на официальном форуме и получил следующий ответ. Сессия это канал коммуникации между сервером и клиентом. Скажем, если мы сохраняем какую-то переменную на сервере, то она доступна до тех пор, пока сессия не закроется.

Время сессии конечно, и определяется в UniServerModule —> SessionTimeout. При закрытии окна браузера сессия также закрывается. Может так получиться, что время сессии кончилось, а пользователю приложение ещё необходимо))) Как избежать этого — посмотрим в данной статье.

Соберем вот такой проект…

3

1

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

Кнопка Test это проверка работоспособности приложения — она просто выводит сообщение.

Сам код работает следующим образом

MainModule

MainModule OnSessionTimeOut

А ларчик просто открывался! Мы просто перед закрытием сессии — каждый раз её продлеваем на 15 секунд. Вот и всё, что нужно было сделать!

Теперь посмотрим на код главной формы

MainForm

Добавим глобальную переменную

Таймер я обработал следующим образом

Включение таймера при создании, то есть так…

А чекбокс — таким образом

Кнопку bTerminate таким образом