summaryrefslogtreecommitdiff
path: root/std/ws/example_client.ts
diff options
context:
space:
mode:
authorAndy Hayden <andyhayden1@gmail.com>2019-10-27 06:04:42 -0700
committerRy Dahl <ry@tinyclouds.org>2019-10-27 09:04:42 -0400
commitaec5a646c9218a0a0da62cbcd1f28bc23c242540 (patch)
treee052f0263eb2abc4915dc3710ec44ee34e9ad621 /std/ws/example_client.ts
parent51dd91a3ccfd9554bcf69b539f2f748da81c5b12 (diff)
feat: top-level-for-await (#3212)
Diffstat (limited to 'std/ws/example_client.ts')
-rw-r--r--std/ws/example_client.ts81
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);