view web/collector/CollectorClient.ts @ 2450:a4052905ca7d default tip

notes about how rdfdb syncs, or should sync
author drewp@bigasterisk.com
date Mon, 03 Jun 2024 23:01:54 -0700
parents 62dc1b3644a0
children
line wrap: on
line source

import { Literal, NamedNode } from "n3";

type Settings = Array<[NamedNode,NamedNode,Literal]>;

export class CollectorClient {
  private settings: Settings;
  constructor(public clientName:string) {
    this.settings = [];
    this.putLoop();
  }
  private async putLoop() {
    await this.put();
    setTimeout(() => {
      this.putLoop();
    }, 1000);
  }
  private async put() {
    // todo: WS
    await fetch("/service/collector/attrs", {
      method: "PUT",
      body: JSON.stringify({
        client: this.clientName,
        clientSession: "unused",
        sendTime: Date.now() / 1000,
        settings: this.settings.map(([d,da,v]) => [d.value,da.value,v.value])
      }),
    });
  }
  public async updateSettings(settings: Settings) {
    this.settings = settings;
    await this.put()
  }
}