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:
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