diff options
Diffstat (limited to 'std/ws')
-rw-r--r-- | std/ws/example_client.ts | 84 | ||||
-rw-r--r-- | std/ws/example_server.ts | 78 | ||||
-rw-r--r-- | std/ws/mod.ts | 8 | ||||
-rw-r--r-- | std/ws/test.ts | 2 |
4 files changed, 88 insertions, 84 deletions
diff --git a/std/ws/example_client.ts b/std/ws/example_client.ts index 4213025f4..93f2f5c7b 100644 --- a/std/ws/example_client.ts +++ b/std/ws/example_client.ts @@ -3,57 +3,59 @@ import { isWebSocketCloseEvent, isWebSocketPingEvent, isWebSocketPongEvent, -} from "../ws/mod.ts"; +} from "./mod.ts"; import { encode } from "../encoding/utf8.ts"; import { BufReader } from "../io/bufio.ts"; import { TextProtoReader } from "../textproto/mod.ts"; import { blue, green, red, yellow } from "../fmt/colors.ts"; -const endpoint = Deno.args[0] || "ws://127.0.0.1:8080"; -/** simple websocket cli */ -try { - const sock = await connectWebSocket(endpoint); - console.log(green("ws connected! (type 'close' to quit)")); +if (import.meta.main) { + const endpoint = Deno.args[0] || "ws://127.0.0.1:8080"; + /** simple websocket cli */ + try { + const sock = await connectWebSocket(endpoint); + console.log(green("ws connected! (type 'close' to quit)")); - const messages = async (): Promise<void> => { - for await (const msg of sock) { - 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 messages = async (): Promise<void> => { + for await (const msg of sock) { + 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 cli = async (): Promise<void> => { - const tpr = new TextProtoReader(new BufReader(Deno.stdin)); - while (true) { - await Deno.stdout.write(encode("> ")); - const line = await tpr.readLine(); - if (line === null) { - break; - } - if (line === "close") { - break; - } else if (line === "ping") { - await sock.ping(); - } else { - await sock.send(line); + const cli = async (): Promise<void> => { + const tpr = new TextProtoReader(new BufReader(Deno.stdin)); + while (true) { + await Deno.stdout.write(encode("> ")); + const line = await tpr.readLine(); + if (line === null) { + break; + } + if (line === "close") { + break; + } else if (line === "ping") { + await sock.ping(); + } else { + await sock.send(line); + } } - } - }; + }; - await Promise.race([messages(), cli()]).catch(console.error); + await Promise.race([messages(), cli()]).catch(console.error); - if (!sock.isClosed) { - await sock.close(1000).catch(console.error); + if (!sock.isClosed) { + await sock.close(1000).catch(console.error); + } + } catch (err) { + console.error(red(`Could not connect to WebSocket: '${err}'`)); } -} catch (err) { - console.error(red(`Could not connect to WebSocket: '${err}'`)); -} -Deno.exit(0); + Deno.exit(0); +} diff --git a/std/ws/example_server.ts b/std/ws/example_server.ts index 947b807ca..3a9815957 100644 --- a/std/ws/example_server.ts +++ b/std/ws/example_server.ts @@ -6,50 +6,52 @@ import { isWebSocketPingEvent, } from "./mod.ts"; -/** websocket echo server */ -const port = Deno.args[0] || "8080"; -console.log(`websocket server is running on :${port}`); -for await (const req of serve(`:${port}`)) { - const { conn, r: bufReader, w: bufWriter, headers } = req; +if (import.meta.main) { + /** websocket echo server */ + const port = Deno.args[0] || "8080"; + console.log(`websocket server is running on :${port}`); + for await (const req of serve(`:${port}`)) { + const { conn, r: bufReader, w: bufWriter, headers } = req; - try { - const sock = await acceptWebSocket({ - conn, - bufReader, - bufWriter, - headers, - }); + try { + const sock = await acceptWebSocket({ + conn, + bufReader, + bufWriter, + headers, + }); - console.log("socket connected!"); + console.log("socket connected!"); - try { - for await (const ev of sock) { - 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); + try { + for await (const ev of sock) { + 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 (err) { - console.error(`failed to receive frame: ${err}`); + } catch (err) { + console.error(`failed to receive frame: ${err}`); - if (!sock.isClosed) { - await sock.close(1000).catch(console.error); + if (!sock.isClosed) { + await sock.close(1000).catch(console.error); + } } + } catch (err) { + console.error(`failed to accept websocket: ${err}`); + await req.respond({ status: 400 }); } - } catch (err) { - console.error(`failed to accept websocket: ${err}`); - await req.respond({ status: 400 }); } } diff --git a/std/ws/mod.ts b/std/ws/mod.ts index 47353d012..324588af0 100644 --- a/std/ws/mod.ts +++ b/std/ws/mod.ts @@ -1,13 +1,13 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. import { decode, encode } from "../encoding/utf8.ts"; -import { hasOwnProperty } from "../util/has_own_property.ts"; +import { hasOwnProperty } from "../_util/has_own_property.ts"; import { BufReader, BufWriter } from "../io/bufio.ts"; import { readLong, readShort, sliceLongToBytes } from "../io/ioutil.ts"; -import { Sha1 } from "../util/sha1.ts"; -import { writeResponse } from "../http/io.ts"; +import { Sha1 } from "../hash/sha1.ts"; +import { writeResponse } from "../http/_io.ts"; import { TextProtoReader } from "../textproto/mod.ts"; -import { Deferred, deferred } from "../util/async.ts"; +import { Deferred, deferred } from "../async/deferred.ts"; import { assert } from "../testing/asserts.ts"; import { concat } from "../bytes/mod.ts"; import Conn = Deno.Conn; diff --git a/std/ws/test.ts b/std/ws/test.ts index 8e97e6ec2..a1c396b18 100644 --- a/std/ws/test.ts +++ b/std/ws/test.ts @@ -21,7 +21,7 @@ import Writer = Deno.Writer; import Reader = Deno.Reader; import Conn = Deno.Conn; import Buffer = Deno.Buffer; -import { delay } from "../util/async.ts"; +import { delay } from "../async/delay.ts"; test("[ws] read unmasked text frame", async () => { // unmasked single text frame with payload "Hello" |