Static site hosting via tangled
1import EventEmitter from "node:events"; 2 3export class KnotEventListener extends EventEmitter { 4 constructor({ knotDomain }) { 5 super(); 6 this.knotDomain = knotDomain; 7 } 8 9 async start() { 10 const ws = new WebSocket(`wss://${this.knotDomain}/events`); 11 ws.onmessage = (event) => this.handleMessage(event); 12 return new Promise((resolve) => { 13 ws.onopen = () => { 14 console.log("Knot event listener connected to:", this.knotDomain); 15 resolve(); 16 }; 17 }); 18 } 19 20 async handleMessage(event) { 21 const data = JSON.parse(event.data); 22 if (data.nsid === "sh.tangled.git.refUpdate") { 23 const event = { 24 details: { 25 ownerDid: data.event.repoDid, 26 repoName: data.event.repoName, 27 }, 28 }; 29 this.emit("refUpdate", event); 30 } 31 } 32}