OverviewFilesCommitsIssuesDocsReleasesPeers

apds / relay.js

42 lines · javascript ref:
import { apds } from './apds.js'
import { render } from './trender.js'

await apds.start(Deno.args[0] || 'default')

const sockets = new Set()

const handle = async (ws) => {
  ws.onopen = () => {
    console.log('Connection opened')
  }

  ws.onmessage = async (m) => {
    if (m.data.length === 44) {
      setTimeout(async () => {
        try { await render(m.data)} catch (err) { console.log(err)} 
      }, 100)
    } else {
      try {
        await apds.make(m.data) 
        await apds.add(m.data)
      } catch (err) { console.log(err)}
    }
    sockets.forEach(s => s.send(m.data))
  }

  ws.onclose = () => {
    console.log('Connection closed') 
  }
}

Deno.serve(
  {port: Deno.args[0] || 8080},
  async (r) => {
  try {
    const { socket, response } = Deno.upgradeWebSocket(r)
    await handle(socket)
    sockets.add(socket)
    return response
  } catch (err) {}
})