mirror of
https://github.com/logos-messaging/lab.waku.org.git
synced 2026-01-05 23:33:11 +00:00
remove dead code, update basis
This commit is contained in:
parent
57d8c27b25
commit
549eb9963a
@ -10,24 +10,12 @@ import { generateKeyPairFromSeed } from "@libp2p/crypto/keys";
|
||||
import { fromString } from "uint8arrays";
|
||||
|
||||
import { Type, Field } from "protobufjs";
|
||||
import {
|
||||
TelemetryClient,
|
||||
TelemetryPushFilter,
|
||||
TelemetryType,
|
||||
} from "./telemetry_client";
|
||||
import {
|
||||
generateRandomNumber,
|
||||
sha256,
|
||||
buildExtraData,
|
||||
DEFAULT_EXTRA_DATA_STR,
|
||||
} from "./util";
|
||||
|
||||
const DEFAULT_CONTENT_TOPIC = "/js-waku-examples/1/message-ratio/utf8";
|
||||
const DEFAULT_PUBSUB_TOPIC = utils.contentTopicToPubsubTopic(
|
||||
DEFAULT_CONTENT_TOPIC
|
||||
);
|
||||
const TELEMETRY_URL =
|
||||
process.env.TELEMETRY_URL || "http://localhost:8080/waku-metrics";
|
||||
|
||||
const ProtoSequencedMessage = new Type("SequencedMessage")
|
||||
.add(new Field("hash", 1, "string"))
|
||||
@ -36,8 +24,6 @@ const ProtoSequencedMessage = new Type("SequencedMessage")
|
||||
.add(new Field("sender", 4, "string"));
|
||||
|
||||
const sequenceCompletedEvent = new CustomEvent("sequenceCompleted");
|
||||
const messageSentEvent = new CustomEvent("messageSent");
|
||||
const messageReceivedEvent = new CustomEvent("messageReceived");
|
||||
|
||||
async function wakuNode(): Promise<LightNode> {
|
||||
let seed = localStorage.getItem("seed");
|
||||
@ -61,16 +47,18 @@ async function wakuNode(): Promise<LightNode> {
|
||||
},
|
||||
});
|
||||
|
||||
await node.dial("/dns4/waku-test.bloxy.one/tcp/8095/wss/p2p/16Uiu2HAmSZbDB7CusdRhgkD81VssRjQV5ZH13FbzCGcdnbbh6VwZ");
|
||||
await node.dial("/dns4/vps-aaa00d52.vps.ovh.ca/tcp/8000/wss/p2p/16Uiu2HAm9PftGgHZwWE3wzdMde4m3kT2eYJFXLZfGoSED3gysofk");
|
||||
await node.dial("/dns4/waku.fryorcraken.xyz/tcp/8000/wss/p2p/16Uiu2HAmMRvhDHrtiHft1FTUYnn6cVA8AWVrTyLUayJJ3MWpUZDB");
|
||||
(window as any).waku = node;
|
||||
|
||||
await Promise.allSettled([
|
||||
node.dial("/dns4/waku-test.bloxy.one/tcp/8095/wss/p2p/16Uiu2HAmSZbDB7CusdRhgkD81VssRjQV5ZH13FbzCGcdnbbh6VwZ"),
|
||||
node.dial("/dns4/vps-aaa00d52.vps.ovh.ca/tcp/8000/wss/p2p/16Uiu2HAm9PftGgHZwWE3wzdMde4m3kT2eYJFXLZfGoSED3gysofk")
|
||||
]);
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
export async function app(telemetryClient: TelemetryClient) {
|
||||
export async function app() {
|
||||
const node = await wakuNode();
|
||||
(window as any).waku = node;
|
||||
|
||||
console.log("DEBUG: your peer ID is:", node.libp2p.peerId.toString());
|
||||
|
||||
@ -86,31 +74,6 @@ export async function app(telemetryClient: TelemetryClient) {
|
||||
}
|
||||
});
|
||||
|
||||
node.libp2p.addEventListener("peer:discovery", async (event) => {
|
||||
const discoveredPeerId = event.detail.id.toString();
|
||||
|
||||
const timestamp = Math.floor(new Date().getTime() / 1000);
|
||||
const extraData = await buildExtraData(node, discoveredPeerId);
|
||||
const hash = await sha256(`${peerId}-${discoveredPeerId}-${timestamp}`);
|
||||
|
||||
telemetryClient.push<TelemetryPushFilter>([
|
||||
{
|
||||
type: TelemetryType.LIGHT_PUSH_FILTER,
|
||||
protocol: "discovery",
|
||||
timestamp,
|
||||
createdAt: timestamp,
|
||||
seenTimestamp: timestamp,
|
||||
peerId,
|
||||
contentTopic: DEFAULT_CONTENT_TOPIC,
|
||||
pubsubTopic: DEFAULT_PUBSUB_TOPIC,
|
||||
ephemeral: false,
|
||||
messageHash: hash,
|
||||
errorMessage: "",
|
||||
extraData,
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
const startLightPushSequence = async (
|
||||
numMessages: number,
|
||||
period: number = 3000
|
||||
@ -125,7 +88,6 @@ export async function app(telemetryClient: TelemetryClient) {
|
||||
`${sequenceHash}-${sequenceIndex}-${sequenceTotal}`
|
||||
);
|
||||
|
||||
const timestamp = Math.floor(new Date().getTime() / 1000);
|
||||
const message = ProtoSequencedMessage.create({
|
||||
hash: messageHash,
|
||||
total: sequenceTotal,
|
||||
@ -157,6 +119,13 @@ export async function app(telemetryClient: TelemetryClient) {
|
||||
} else {
|
||||
document.dispatchEvent(sequenceCompletedEvent);
|
||||
}
|
||||
|
||||
if ( result.successes.length > 0) {
|
||||
const messageElement = document.createElement("div");
|
||||
messageElement.textContent = messageHash;
|
||||
|
||||
document.getElementById("messagesSent")?.appendChild(messageElement);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("DEBUG: Error sending message", error);
|
||||
}
|
||||
@ -177,14 +146,14 @@ export async function app(telemetryClient: TelemetryClient) {
|
||||
return;
|
||||
}
|
||||
|
||||
const timestamp = Math.floor(new Date().getTime() / 1000);
|
||||
|
||||
const messageElement = document.createElement("div");
|
||||
messageElement.textContent = `Message: ${decodedMessage.hash}`;
|
||||
document.dispatchEvent(messageReceivedEvent);
|
||||
messageElement.textContent = decodedMessage.hash;
|
||||
|
||||
document.getElementById("messagesReceived")?.appendChild(messageElement);
|
||||
};
|
||||
|
||||
await node.filter.subscribe(decoder, subscriptionCallback);
|
||||
await node.nextFilter.subscribe(decoder, subscriptionCallback);
|
||||
await node.nextFilter.subscribe(decoder, subscriptionCallback);
|
||||
};
|
||||
|
||||
return {
|
||||
@ -195,10 +164,7 @@ export async function app(telemetryClient: TelemetryClient) {
|
||||
}
|
||||
|
||||
(async () => {
|
||||
const telemetryClient = new TelemetryClient(TELEMETRY_URL, 5000);
|
||||
const { node, startLightPushSequence, startFilterSubscription } = await app(
|
||||
telemetryClient
|
||||
);
|
||||
const { startLightPushSequence, startFilterSubscription } = await app();
|
||||
|
||||
startFilterSubscription();
|
||||
|
||||
|
||||
@ -1,85 +0,0 @@
|
||||
export enum TelemetryType {
|
||||
LIGHT_PUSH_FILTER = "LightPushFilter",
|
||||
}
|
||||
|
||||
interface TelemetryMessage {
|
||||
type: string;
|
||||
|
||||
timestamp: number;
|
||||
contentTopic: string;
|
||||
pubsubTopic: string;
|
||||
peerId: string;
|
||||
errorMessage: string;
|
||||
extraData: string;
|
||||
}
|
||||
|
||||
export interface TelemetryPushFilter extends TelemetryMessage {
|
||||
type: "LightPushFilter",
|
||||
protocol: string;
|
||||
ephemeral: boolean;
|
||||
seenTimestamp: number;
|
||||
createdAt: number;
|
||||
messageHash: string;
|
||||
}
|
||||
|
||||
export class TelemetryClient {
|
||||
constructor(
|
||||
private readonly url: string,
|
||||
private intervalPeriod: number = 5000
|
||||
) {}
|
||||
|
||||
private queue: TelemetryMessage[] = [];
|
||||
private intervalId: NodeJS.Timeout | null = null;
|
||||
private requestId = 0;
|
||||
|
||||
public push<T extends TelemetryMessage>(messages: T[]) {
|
||||
this.queue.push(...messages);
|
||||
}
|
||||
|
||||
public async start() {
|
||||
if (!this.intervalId) {
|
||||
this.intervalId = setInterval(async () => {
|
||||
if (this.queue.length > 0) {
|
||||
const success = await this.send(this.queue);
|
||||
if (success) {
|
||||
console.log("Sent ", this.queue.length, " telemetry logs");
|
||||
this.queue = [];
|
||||
}
|
||||
}
|
||||
}, this.intervalPeriod);
|
||||
}
|
||||
}
|
||||
|
||||
public stop() {
|
||||
if (this.intervalId) {
|
||||
clearInterval(this.intervalId);
|
||||
this.intervalId = null;
|
||||
}
|
||||
}
|
||||
private async send<T extends TelemetryMessage>(messages: T[]) {
|
||||
if (!window.location.hostname.includes("lab.waku.org")) {
|
||||
return;
|
||||
}
|
||||
|
||||
const telemetryRequests = messages.map((message) => ({
|
||||
id: ++this.requestId,
|
||||
telemetryType: message.type.toString(),
|
||||
telemetryData: message
|
||||
}));
|
||||
|
||||
try {
|
||||
const res = await fetch(this.url, {
|
||||
method: "POST",
|
||||
body: JSON.stringify(telemetryRequests),
|
||||
});
|
||||
if (res.status !== 201) {
|
||||
console.log("DEBUG: Error sending messages to telemetry service: ", res.status, res.statusText, res.json);
|
||||
return false
|
||||
}
|
||||
return true;
|
||||
} catch (e) {
|
||||
console.log("DEBUG: Error sending messages to telemetry service", e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,3 @@
|
||||
import { Peer } from "@libp2p/interface";
|
||||
import type { LightNode } from "@waku/sdk";
|
||||
|
||||
export const generateRandomNumber = (): number => {
|
||||
return Math.floor(Math.random() * 1000000);
|
||||
};
|
||||
@ -13,27 +10,3 @@ export const sha256 = async (number: number | string ): Promise<string> => {
|
||||
.map((b) => b.toString(16).padStart(2, "0"))
|
||||
.join("");
|
||||
};
|
||||
|
||||
const DEFAULT_EXTRA_DATA = { sdk: "0.0.29-rc" };
|
||||
export const DEFAULT_EXTRA_DATA_STR = JSON.stringify(DEFAULT_EXTRA_DATA);
|
||||
|
||||
export const buildExtraData = async (node: LightNode, peerId: string): Promise<string> => {
|
||||
let extraData = { ...DEFAULT_EXTRA_DATA };
|
||||
const peer: Peer = (await node.libp2p.peerStore.all()).find(p => p.id.toString() === peerId);
|
||||
|
||||
if (!peer || peerId === node.libp2p.peerId.toString()) {
|
||||
return JSON.stringify(extraData);
|
||||
}
|
||||
|
||||
const websocket = peer
|
||||
.addresses
|
||||
.map(addr => addr.multiaddr.toString())
|
||||
.some(addr => addr.includes("ws") || addr.includes("wss"));
|
||||
|
||||
return JSON.stringify({
|
||||
...extraData,
|
||||
peerId,
|
||||
websocket,
|
||||
enabledProtocols: peer.protocols,
|
||||
});
|
||||
};
|
||||
@ -1,6 +1,5 @@
|
||||
const CopyWebpackPlugin = require("copy-webpack-plugin");
|
||||
const path = require("path");
|
||||
const webpack = require("webpack");
|
||||
|
||||
module.exports = {
|
||||
entry: "./src/index.ts", // Changed from index.js to index.ts
|
||||
@ -32,8 +31,5 @@ module.exports = {
|
||||
new CopyWebpackPlugin({
|
||||
patterns: ["index.html", "favicon.ico", "favicon.png", "manifest.json"],
|
||||
}),
|
||||
new webpack.DefinePlugin({
|
||||
'process.env.TELEMETRY_URL': JSON.stringify(process.env.TELEMETRY_URL || "https://telemetry.status.im/waku-metrics")
|
||||
}),
|
||||
],
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user