Error handling, host argument support, cleanup
This commit is contained in:
parent
430b416d30
commit
99a69380db
3 changed files with 26 additions and 5 deletions
|
@ -1,2 +1,5 @@
|
|||
/** How many seconds a page view is considered "current". */
|
||||
export const CURRENT_THRESHOLD = 300;
|
||||
export const CURRENT_THRESHOLD = 300 as const;
|
||||
|
||||
/** Maximum reconnect delay in seconds. */
|
||||
export const MAX_RECONNECT_DELAY = 30 as const;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { connectListener } from "./archive-client.js";
|
||||
import { MAX_RECONNECT_DELAY } from "./config.js";
|
||||
import { CurrentSessions } from "./current-sessions.js";
|
||||
import { LiveCounter } from "./live-counter.js";
|
||||
import { IRemotePageView, parseView } from "./page-view.js";
|
||||
|
@ -10,13 +11,20 @@ let currentyLiveCounter: LiveCounter;
|
|||
let currentSessions: CurrentSessions;
|
||||
let topPaths: TopPaths;
|
||||
let eventSource: EventSource;
|
||||
let host: string;
|
||||
|
||||
function openCallback(stream: EventSource, e: Event) {
|
||||
console.log("Opened event stream.");
|
||||
}
|
||||
|
||||
function errorCallback(stream: EventSource, e: ErrorEvent) {
|
||||
console.log(e);
|
||||
console.error(e);
|
||||
|
||||
stream.close();
|
||||
|
||||
console.log("Reconnecting...");
|
||||
const delaySecs = Math.random() * MAX_RECONNECT_DELAY;
|
||||
setTimeout(initConnection, delaySecs * 1000);
|
||||
}
|
||||
|
||||
function msgCallback(stream: EventSource, e: MessageEvent) {
|
||||
|
@ -31,13 +39,25 @@ function msgCallback(stream: EventSource, e: MessageEvent) {
|
|||
topPaths.handleView(parsedData);
|
||||
}
|
||||
|
||||
function initConnection() {
|
||||
eventSource = connectListener(host, openCallback, msgCallback, errorCallback);
|
||||
}
|
||||
|
||||
function main() {
|
||||
currentyLiveCounter = new LiveCounter(document.getElementById("currently-live-counter")!);
|
||||
worldMap = new WorldMap(document.getElementById("world-map")!);
|
||||
currentSessions = new CurrentSessions(document.getElementById("current-sessions-data")!);
|
||||
topPaths = new TopPaths(document.getElementById("top-paths-data")!);
|
||||
|
||||
eventSource = connectListener("localhost:1971", openCallback, msgCallback, errorCallback);
|
||||
const hostParam = (new URL(window.location.href)).searchParams.get("host");
|
||||
|
||||
if (hostParam === null) {
|
||||
alert("Missing host! Give host as ?host= query argument.");
|
||||
throw new Error("Missing host.");
|
||||
}
|
||||
|
||||
host = hostParam;
|
||||
initConnection();
|
||||
}
|
||||
|
||||
if (document.readyState === "interactive") {
|
||||
|
|
|
@ -2,8 +2,6 @@ import { Component } from "./component.js";
|
|||
import { CURRENT_THRESHOLD } from "./config.js";
|
||||
import { IPageView } from "./page-view.js";
|
||||
|
||||
const UPDATE_TIMER = 10;
|
||||
|
||||
/**
|
||||
* LiveCounter shows the amount of users on the site in the last 5 minutes.
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue