You are here

Пример использования RTP

Ниже описан простейший пример использования модуля RTP в скриптах на языке JavaScript.

Необходимо включить поддержку скриптов и убедиться, что в файле конфигурации присутствует конфигурация модуля RTP.

Далее необходимо добавить вызов функции с именем OnBeforeLoadSettings перед загрузкой настроек программой, для этого в файле конфигурации в теге <settings/> необходимо добавить следующее:

onBeforeLoadSettings="OnBeforeLoadSettings"

Сама функция OnBeforeLoadSettings() будет добавлять в окошко программы 2 кнопки, первая из которых будет создавать запрос RTP, а вторая будет включать и выключать сам подуль RTP.

Функция будет выглядеть так:

function OnBeforeLoadSettings()
{
	// показываем пользователю кнопку customButton1.
	Window.ShowWindow("customButton1");
	// меняем текст кнопки на "Create Req".
	Window.SetWindowText("customButton1", "Create Req");
	// указываем, что необходимо вызвать функцию OnCustom1Click при нажатии на кнопку.
	Window.SetCallback("customButton1_click", "OnCustom1Click");
 
	// показываем пользователю кнопку customButton2.
	Window.ShowWindow("customButton2");
	// меняем текст кнопки на "Start/Stop".
	Window.SetWindowText("customButton2", "Start/Stop");
	// указываем, что необходимо вызвать функцию OnCustom2Click при нажатии на кнопку.
	Window.SetCallback("customButton2_click", "OnCustom2Click");
}

Далее нужно добавить функцию OnCustom2Click, которая будет проверять текущее состояние модуля RTP и запускать/останавливать модуль:

function OnCustom2Click()
{
	// если модуль RTP запущен
	if (RTP.IsStarted())
		// подаём запрос на остановку модуля.
		// функция OnRTPStop будет вызвана тогда, когда модуль будет реально остановлен.
		RTP.Stop("OnRTPStop");
	else
		// если модуль не был запущен, то запускаем его.
		RTP.Start();
}
// функция будет вызвана тогда, когда модуль RTP будет остановлен.
function OnRTPStop(bStatus)
{
	if (bStatus)
		AddToLog("RTP module stopped");
	else
		AddToLog("RTP module isn't started");
}

Далее нужно добавить функцию OnCustom1Click, которая будет создавать запросы и добавлять их в очередь запросов RTP.

function OnCustom1Click()
{
	// создаём запрос.
	req = RTP.CreateRequest();
	// указываем адрес страницы, которую надо скачать.
	req.Url = "http://www.microsoft.com/";
	// указываем заголовки запроса, используя макросы.
	req.Request = "GET #$r$UrlObject$r$# HTTP/1.1\r\nHost: #$r$UrlServer$r$#\r\nUser-Agent: HelloWorld\r\nConnection: close\r\n\r\n";
	// указываем функцию, которую нужно вызвать, если произошла ошибка.
	req.OnError = "OnReqError";
	// указываем функцию, которую нужно вызвать, если страница была успешно скачана
	req.OnAfterDataReceived = "OnReqAfterDataReceived";
	// добавляем запрос в очередь на выполнение.
	RTP.AddRequestTail(req);
}
 
// функция будет вызвана, если при выполнении запроса произошла ошибка и страница не была скачана.
function OnReqError(req, error)
{
	// пишем про ошибку в лог.
	AddToLog("Error " + error + " in request");
	// удаляем запрос.
	RTP.DestroyRequest(req);
}
 
// функция будет вызвана, если страница была скачана.
function OnReqAfterDataReceived(req)
{
	// сохраняем в файл с именем __req.html заголовки и сам ответ от сервера/
	AppendFile("__req.html", req.AnswerHeaders + req.AnswerData);
	// сообщаем в логе, что запрос был выполнен.
	AddToLog("Req completed");
	// удаляем сам запрос.
	RTP.DestroyRequest(req);
}