Отслеживание событий Javascript в реальном времени (статистика Javascript) - PullRequest
3 голосов
/ 09 июля 2010

В сети существует множество сервисов веб-статистики в режиме реального времени (w3counter-histats-gostats). Они просто учитываются один раз при запросе страницы, но я хочу отслеживать функции / события javascript, потому что мой сайт полностью-ajax.Так я хочу что-то вроде трекера событий Google Analytics (http://code.google.com/intl/en/apis/analytics/docs/gaJS/gaJSApiEventTracking.html), но в режиме реального времени и очень просто. Может быть размещен или просто скрипт php. Спасибо.

пример событий

  • пользователь что-то создал
  • пользователь что-то удалил
  • ajax error happend
  • browser eror happend
  • пользователь вошел в систему

Я нашел свой ответ взглянуть

Ответы [ 6 ]

4 голосов
/ 09 июля 2010

Это не так сложно реализовать свой .Вы просто отправляете запрос на сервер , когда происходит событие вроде: tracker.gif?action=create&what=sth, tracker.gif?action=error&what=k_is_undefined и т. Д.

Затем вы анализируете журналы сервера для получения статистики,(или вы отправляете свой запрос прямо в базу данных по tracker.php?action=create&what=sth)

Поскольку вы контролируете сайт, теперь легко выполнять эти запросы, когда пользователь входит в систему, или запрос ajax не выполняется.

Для обработки ошибок вы можете использовать window.onerror:

// send a request about an event to the server
function fireEvent(action, message, options) {
  var loggerUrl = "/tracker.gif", parameters;
  options = options || {};
  options.url = options.url || window.location.href;
  options.user_agent = navigator.userAgent;
  options.message = message;
  for (var i in options) {
    if (options.hasOwnProperty(i)) {
      parameters += "&" + i + "=" + encodeURIComponent(options[i]);
    }
  }    
  new Image().src = loggerUrl + parameters;
}

// log script errors
window.onerror = function(errorMessage, url, line) {   
  fireEvent("error", errorMessage, {
    url: url, 
    line: line
  });
  return true;
};

// example event on the page
fireEvent("ajaxError", "XY page failed to load");

(примечание: window.onerror недоступно в сафари)


ОБНОВЛЕНИЕ

А вот и подтверждение концепции парсера PHP:

$i = 1;
$d = file_get_contents("log.txt");
$requests = explode("\n", $d);
foreach ($requests as $req) {
  $pos = strpos($req, "tracker.gif");
  if ($pos === false) continue;
  $start_pos = strpos($req, "?", $pos);
  $end_pos = strpos($req, " ", $start_pos); // can also be " HTTP"
  $length = $end_pos - $start_pos;
  $req = substr($req, $start_pos+1, $length);
  $exprs = explode("&", $req);
  echo $i . ".<br>"; // request number
  $i += 1;
  foreach ($exprs as $expr) {
    list($name, $value) = explode("=", $expr);
    echo $name . " =>" . $value . "<br>"; // key => value
  }
}
3 голосов
/ 09 июля 2010

Если вы используете jQuery, вы можете запустить код во время события $.ajaxSuccess

0 голосов
/ 14 апреля 2014

Если кто-то все еще ищет, я с большим удовольствием использую Piwik в качестве альтернативы с открытым исходным кодом.

Для отслеживания событий есть хороший клиент JavaScript с некоторой документацией .

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

_paq.push( [ 'category', 'action', 'name', 'value' ] );

Затем вы можете экспортировать все данные из веб-представлений Piwik или напрямую запросить БД для получения информации, если вы размещаете Piwik на вашем сервере.

0 голосов
/ 24 июля 2010

Существует множество вариантов, если вы используете Google для «аналитики в реальном времени». Но большинство из них платные.

Я бы порекомендовал mixpanel и chartbeat.

0 голосов
/ 09 июля 2010

Это то, что я ищу, К сожалению, это не бесплатно, но я надеюсь, что найду один.

http://mixpanel.com

0 голосов
/ 09 июля 2010

Используйте Google Analytics и _trackPageview (), как указано здесь!

Изменить: Если это не дает вам решение, которое вы ищете, я думаю, что вы ищете сервис, который еще не существует, в этом случае примите предложение Джейсона $.ajaxSuccess() и сделайте свое собственное.

...