anproto personal data server
at master 884 B view raw
1import { apds } from './apds.js' 2import { render } from './trender.js' 3 4await apds.start(Deno.args[0] || 'default') 5 6const sockets = new Set() 7 8const handle = async (ws) => { 9 ws.onopen = () => { 10 console.log('Connection opened') 11 } 12 13 ws.onmessage = async (m) => { 14 if (m.data.length === 44) { 15 setTimeout(async () => { 16 try { await render(m.data)} catch (err) { console.log(err)} 17 }, 100) 18 } else { 19 try { 20 await apds.make(m.data) 21 await apds.add(m.data) 22 } catch (err) { console.log(err)} 23 } 24 sockets.forEach(s => s.send(m.data)) 25 } 26 27 ws.onclose = () => { 28 console.log('Connection closed') 29 } 30} 31 32Deno.serve( 33 {port: Deno.args[0] || 8080}, 34 async (r) => { 35 try { 36 const { socket, response } = Deno.upgradeWebSocket(r) 37 await handle(socket) 38 sockets.add(socket) 39 return response 40 } catch (err) {} 41})