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_client.ts | |
parent | 51dd91a3ccfd9554bcf69b539f2f748da81c5b12 (diff) |
feat: top-level-for-await (#3212)
Diffstat (limited to 'std/ws/example_client.ts')
-rw-r--r-- | std/ws/example_client.ts | 81 |
1 files changed, 38 insertions, 43 deletions
diff --git a/std/ws/example_client.ts b/std/ws/example_client.ts index a6649570e..3b132281f 100644 --- a/std/ws/example_client.ts +++ b/std/ws/example_client.ts @@ -11,50 +11,45 @@ import { blue, green, red, yellow } from "../fmt/colors.ts"; const endpoint = Deno.args[1] || "ws://127.0.0.1:8080"; /** simple websocket cli */ -async function main(): Promise<void> { - const sock = await connectWebSocket(endpoint); - console.log(green("ws connected! (type 'close' to quit)")); - (async function(): Promise<void> { - for await (const msg of sock.receive()) { - if (typeof msg === "string") { - console.log(yellow("< " + msg)); - } else if (isWebSocketPingEvent(msg)) { - console.log(blue("< ping")); - } else if (isWebSocketPongEvent(msg)) { - console.log(blue("< pong")); - } else if (isWebSocketCloseEvent(msg)) { - console.log(red(`closed: code=${msg.code}, reason=${msg.reason}`)); - } +const sock = await connectWebSocket(endpoint); +console.log(green("ws connected! (type 'close' to quit)")); +(async function(): Promise<void> { + for await (const msg of sock.receive()) { + if (typeof msg === "string") { + console.log(yellow("< " + msg)); + } else if (isWebSocketPingEvent(msg)) { + console.log(blue("< ping")); + } else if (isWebSocketPongEvent(msg)) { + console.log(blue("< pong")); + } else if (isWebSocketCloseEvent(msg)) { + console.log(red(`closed: code=${msg.code}, reason=${msg.reason}`)); } - })(); - const tpr = new TextProtoReader(new BufReader(Deno.stdin)); - while (true) { - await Deno.stdout.write(encode("> ")); - const [line, err] = await tpr.readLine(); - if (err) { - console.error(red(`failed to read line from stdin: ${err}`)); - break; - } - if (line === "close") { - break; - } else if (line === "ping") { - await sock.ping(); - } else { - await sock.send(line); - } - // FIXME: Without this, - // sock.receive() won't resolved though it is readable... - await new Promise( - (resolve): void => { - setTimeout(resolve, 0); - } - ); } - await sock.close(1000); - // FIXME: conn.close() won't shutdown process... - Deno.exit(0); -} +})(); -if (import.meta.main) { - main(); +const tpr = new TextProtoReader(new BufReader(Deno.stdin)); +while (true) { + await Deno.stdout.write(encode("> ")); + const [line, err] = await tpr.readLine(); + if (err) { + console.error(red(`failed to read line from stdin: ${err}`)); + break; + } + if (line === "close") { + break; + } else if (line === "ping") { + await sock.ping(); + } else { + await sock.send(line); + } + // FIXME: Without this, + // sock.receive() won't resolved though it is readable... + await new Promise( + (resolve): void => { + setTimeout(resolve, 0); + } + ); } +await sock.close(1000); +// FIXME: conn.close() won't shutdown process... +Deno.exit(0); |