import { WebSocket } from "ws"; import { DataNet } from "../packages/sdk/dist/datanet.js"; if (!globalThis.WebSocket) { globalThis.WebSocket = WebSocket; } const API_KEY = process.env.DATANET_API_KEY ?? "ak_dev_12345"; const CHANNEL = process.env.DATANET_CHANNEL ?? "project.proj_dev.demo.node"; const API_URL = process.env.DATANET_API_URL ?? "http://localhost:8080"; const WS_URL = process.env.DATANET_WS_URL ?? "ws://localhost:8080"; const COUNT = Number.parseInt(process.env.DATANET_COUNT ?? "10", 10); const INTERVAL_MS = Number.parseInt(process.env.DATANET_INTERVAL_MS ?? "1000", 10); const client = new DataNet({ apiKey: API_KEY, apiUrl: API_URL, wsUrl: WS_URL, }); client.on("connect", () => { console.log(`[pub] connected to ${WS_URL}/ws`); }); client.on("disconnect", () => { console.log("[pub] disconnected"); }); client.on("error", (error) => { const message = error instanceof Error ? error.message : String(error); console.error(`[pub] error: ${message}`); }); async function sleep(ms) { await new Promise((resolve) => setTimeout(resolve, ms)); } async function main() { await client.connect(); console.log(`[pub] publishing ${COUNT} message(s) to ${CHANNEL}`); for (let i = 1; i <= COUNT; i += 1) { const payload = { index: i, source: "node-sdk-demo", wave: Number((Math.sin(i / 2) * 0.5 + 0.5).toFixed(3)), sentAt: Date.now(), }; client.publish(CHANNEL, payload); console.log(`[pub] sent ${i}/${COUNT}: ${JSON.stringify(payload)}`); if (i < COUNT) { await sleep(INTERVAL_MS); } } client.disconnect(); } void main();