diff options
author | Andy Hayden <andyhayden1@gmail.com> | 2019-10-27 06:04:42 -0700 |
---|---|---|
committer | Ry Dahl <ry@tinyclouds.org> | 2019-10-27 09:04:42 -0400 |
commit | aec5a646c9218a0a0da62cbcd1f28bc23c242540 (patch) | |
tree | e052f0263eb2abc4915dc3710ec44ee34e9ad621 /std/ws/example_server.ts | |
parent | 51dd91a3ccfd9554bcf69b539f2f748da81c5b12 (diff) |
feat: top-level-for-await (#3212)
Diffstat (limited to 'std/ws/example_server.ts')
-rw-r--r-- | std/ws/example_server.ts | 96 |
1 files changed, 45 insertions, 51 deletions
diff --git a/std/ws/example_server.ts b/std/ws/example_server.ts index cd51ff94c..ea981256e 100644 --- a/std/ws/example_server.ts +++ b/std/ws/example_server.ts @@ -9,58 +9,52 @@ import { /** websocket echo server */ const port = Deno.args[1] || "8080"; -async function main(): Promise<void> { - console.log(`websocket server is running on :${port}`); - for await (const req of serve(`:${port}`)) { - const { headers, conn } = req; - acceptWebSocket({ - conn, - headers, - bufReader: req.r, - bufWriter: req.w - }) - .then( - async (sock: WebSocket): Promise<void> => { - console.log("socket connected!"); - const it = sock.receive(); - while (true) { - try { - const { done, value } = await it.next(); - if (done) { - break; - } - const ev = value; - if (typeof ev === "string") { - // text message - console.log("ws:Text", ev); - await sock.send(ev); - } else if (ev instanceof Uint8Array) { - // binary message - console.log("ws:Binary", ev); - } else if (isWebSocketPingEvent(ev)) { - const [, body] = ev; - // ping - console.log("ws:Ping", body); - } else if (isWebSocketCloseEvent(ev)) { - // close - const { code, reason } = ev; - console.log("ws:Close", code, reason); - } - } catch (e) { - console.error(`failed to receive frame: ${e}`); - await sock.close(1000).catch(console.error); +console.log(`websocket server is running on :${port}`); +for await (const req of serve(`:${port}`)) { + const { headers, conn } = req; + acceptWebSocket({ + conn, + headers, + bufReader: req.r, + bufWriter: req.w + }) + .then( + async (sock: WebSocket): Promise<void> => { + console.log("socket connected!"); + const it = sock.receive(); + while (true) { + try { + const { done, value } = await it.next(); + if (done) { + break; } + const ev = value; + if (typeof ev === "string") { + // text message + console.log("ws:Text", ev); + await sock.send(ev); + } else if (ev instanceof Uint8Array) { + // binary message + console.log("ws:Binary", ev); + } else if (isWebSocketPingEvent(ev)) { + const [, body] = ev; + // ping + console.log("ws:Ping", body); + } else if (isWebSocketCloseEvent(ev)) { + // close + const { code, reason } = ev; + console.log("ws:Close", code, reason); + } + } catch (e) { + console.error(`failed to receive frame: ${e}`); + await sock.close(1000).catch(console.error); } } - ) - .catch( - (err: Error): void => { - console.error(`failed to accept websocket: ${err}`); - } - ); - } -} - -if (import.meta.main) { - main(); + } + ) + .catch( + (err: Error): void => { + console.error(`failed to accept websocket: ${err}`); + } + ); } |