nakarte

Source code of https://map.sikmir.ru (fork)
git clone git://git.sikmir.ru/nakarte
Log | Files | Refs | LICENSE

commit 4ebd280e4eda218dfd997b422ede3507a58dcdaa
parent 80fef68ab2845ebb9068dd542fac72291c89aa0e
Author: Sergej Orlov <wladimirych@gmail.com>
Date:   Fri, 16 Nov 2018 00:01:40 +0100

[logging] use sendBeacon for events if available; generate and send session id

Diffstat:
Msrc/lib/logging/index.js | 22++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/src/lib/logging/index.js b/src/lib/logging/index.js @@ -1,5 +1,7 @@ import Raven from 'raven-js'; +const sessionId = Math.random().toString(36).substring(2); + function captureException(e, options) { console.log('captureException', e, options); Raven.captureException(e, options) @@ -29,15 +31,23 @@ function captureBreadcrumbWithUrl(crumb) { } function logEvent(eventName, extra) { + const url = 'https://nakarte.me/event'; + const data = {event: eventName.toString()}; - if (extra) { - data['data'] = extra; + data.data = Object.assign({}, extra, {beacon: true, session: sessionId}); + let s = JSON.stringify(data); + try { + navigator.sendBeacon(url, s); + } catch (e) { + data.data.beacon = false; + s = JSON.stringify(data); + const xhr = new XMLHttpRequest(); + xhr.open('POST', 'https://nakarte.me/event'); + xhr.send(s); } - const s = JSON.stringify(data); - const xhr = new XMLHttpRequest(); - xhr.open('POST', 'https://nakarte.me/event'); - xhr.send(s); } + + export default {captureMessage, captureException, setExtraContext, captureBreadcrumbWithUrl, captureBreadcrumb, captureMessageWithUrl, logEvent} \ No newline at end of file