diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2020-05-09 13:34:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-09 08:34:47 -0400 |
commit | f184332c09c851faac50f598d29ebe4426e05464 (patch) | |
tree | 2659aba63702537fcde1bb64ddeafea1e5863f3e /std/ws/example_server.ts | |
parent | 2b02535028f868ea8dfc471c4921a237747ccd4a (diff) |
BREAKING(std): reorganization (#5087)
* Prepend underscores to private modules
* Remove collectUint8Arrays() It would be a misuse of Deno.iter()'s result.
* Move std/_util/async.ts to std/async
* Move std/util/sha*.ts to std/hash
Diffstat (limited to 'std/ws/example_server.ts')
-rw-r--r-- | std/ws/example_server.ts | 78 |
1 files changed, 40 insertions, 38 deletions
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 }); } } |