JC-WebClient представляет из себя приложение, которое работает на стороне клиента. Данное приложение принимает локальные HTTPS-запросы на порту 24738 и отправляет команды токену. Токен отрабатывает эти команды и возвращает результат выполнения обратно приложению. Приложение, в свою очередь, возвращает результат работы в браузер.
Примечание
Для корректной работы JC-WebClient web-страница должна быть получена от сервера, а не запущена с локальной копии web-страницы (.html- или .htm-файла).
Для поддержки JC-WebClient, в код web-страницы необходимо внести следующие изменения:
Подключить скрипт, который требуется для обеспечения взаимодействия между браузером и приложением JC-WebClient:
<script type="text/javascript" src="https://localhost:24738/JCWebClient.js"></script>
Вызвать метод initialize():
JCWebClient().initialize()
Как определить, установлен ли клиент JC-WebClient
Определить, установлен ли клиент JC-WebClient, можно, добавив в код web-страницы следующий фрагмент:
if((typeof JCWebClient != 'undefined') && (typeof JCWebClient.id == 'undefined')) { // Клиент JC-WebClient установлен, можно работать с его методами } else { // Клиент JC-WebClient не установлен. Необходимо предложить пользователю сделать установку }
Если требуется одновременная поддержка версии JC-WebClient, работающей через локальный веб-сервер, и старой версии JC-WebClient 2.x, работающей через NPAPI и ActiveX, то необходимо дополнительно:
подключить html элемент object с типом application/x-jcwebclient, добавив следующий код:
<object id="JCWebClient" type="application/x-jcwebclient" width="0" height="0"></object>
далее можно определить, какая именно версия установлена, следующим образом:
if(typeof JCWebClient != 'undefined') {
// Установлен клиент одной из версий JC-WebClient (2.x или новой) либо оба клиента
if(typeof JCWebClient.id == 'undefined') {
// Установлен клиент новой версии, работающей через локальный веб-сервер
}
else {
// Установлен клиент версии 2.x, работающей через NPAPI и ActiveX
}
}
else {
//Не установлен клиент ни старой, ни новой версии JC-WebClient
}
Разделение контекста между вкладками браузера
В JC-WebClient реализовано разделение контекста (сеансов работы с токеном) при работе из различных вкладок браузера. Это означает, что сеанс работы с токеном, установленный из одной вкладки, недоступен для сеанса работы с токеном, установленного из другой вкладки.
Контекст по умолчанию сохраняется при переходе с одной страницы на другую в рамках одной и той же вкладки браузера, а также при обновлении страницы (нажатие клавиши F5).
JC-WebClient предоставляет возможность явного указания на необходимость обнуления контекста при выходе за пределы данной web-страницы. Для этого установите на этой web-странице значение параметра JCWebClient().saveSession в false:
JCWebClient().saveSession = false;
Указанное значение параметра будет действовать только в пределах данной web-страницы.
В JC-WebClient реализован таймаут в размере 1 минуты, по истечении которого контекст автоматически обнуляется, если приложение определило, что web-страница перестала отвечать. При этом также удаляется и сеанс работы с токеном. Это произойдёт, например, в следующих случаях:
Примечание
Если в текущем сеансе работы с токеном был введён PIN-код и токен находится в состоянии “залогиненности”, то после обнуления контекста состояние “залогиненности” будет недоступно web-приложению, т.е. PIN-код потребуется вводить заново.
Более детальная информация по работе с JC-WebClient представлена в следующих разделах: