На самом деле для этого вам не нужен iframe. Вы можете использовать wixCode для этого. WixCode, у вас есть коллекция БД. и все, что вам нужно сделать, это обновить значения коллекции при каждом клике.
Допустим, вы добавляете коллекцию Events, которая может иметь поля: id, eventName, clicksCount
добавить к ней одну строку с eventName = 'someButtonClickEvent' и clicksCount = 0 Затем добавьте следующий код на свою страницу :
import wixData from 'wix-data';
$w.onReady(function () {});
export function button1_click(event) {
wixData.get("Events", "the_event_id")
.then( (results) => {
let item = results;
let toSave = {
"_id": "the_event_id",
"clicksCount": item.clicksCount++
};
wixData.update("Events", toSave)
})
}
теперь вам нужно добавить button1_click в качестве обработчика onClick вашей кнопки (на панели свойств wixCode).
Я сказал бы, что это зависит, на каком точном интервале Вы пробуете меру, количество времени от последнего байта запроса, который Вы отправляете до первого байта ответа, который Вы получаете? Или пока весь ответ не получен? Или Вы пытаетесь измерить время серверной стороны только?
, При попытке измерить серверное время обработки только, Вы собираетесь перенести трудности факторизовать количество времени, проведенное в сетевом транзите для Вашего запроса для прибытия и ответ на возврат. Иначе, так как Вы управляете запросом сами через Сокет, можно измерить прошедшее время между любыми двумя моментами путем проверки Системных часов и вычислений различия. Например:
public void sendHttpRequest(byte[] requestData, Socket connection) {
long startTime = System.currentTimeMillis();
writeYourRequestData(connection.getOutputStream(), requestData);
byte[] responseData = readYourResponseData(connection.getInputStream());
long elapsedTime = System.currentTimeMillis() - startTime;
System.out.println("Total elapsed http request/response time in milliseconds: " + elapsedTime);
}
Этот код измерил бы время от того, когда Вы начинаете выписывать свой запрос к тому, когда Вы заканчиваете получать ответ и печатаете результат (предполагающий, что у Вас есть свои определенные реализованные методы чтения-записи).
Можно использовать время и завихриться и время на командной строке.-I аргумент в пользу завихрения дает этому команду только запрашивать заголовок.
time curl -I 'http://server:3000'
Что-то вроде этого могло бы добиться цели
import java.io.IOException; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.URIException; import org.apache.commons.httpclient.methods.HeadMethod; import org.apache.commons.lang.time.StopWatch; //import org.apache.commons.lang3.time.StopWatch public class Main { public static void main(String[] args) throws URIException { StopWatch watch = new StopWatch(); HttpClient client = new HttpClient(); HttpMethod method = new HeadMethod("http://stackoverflow.com/"); try { watch.start(); client.executeMethod(method); } catch (IOException e) { e.printStackTrace(); } finally { watch.stop(); } System.out.println(String.format("%s %s %d: %s", method.getName(), method.getURI(), method.getStatusCode(), watch.toString())); } }
HEAD http://stackoverflow.com/ 200: 0:00:00.404
Возможно, я пропускаю что-то, но почему не делают Вас, просто используйте:
// open your connection
long start = System.currentTimeMillis();
// send request, wait for response (the simple socket calls are all blocking)
long end = System.currentTimeMillis();
System.out.println("Round trip response time = " + (end-start) + " millis");
Используйте AOP, чтобы прервать вызовы к сокету и измерить время отклика.