From 151ce0266eb4de2c8fc600c81c192a5f791b6169 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Wed, 9 Oct 2019 17:10:09 -0400 Subject: Move everything into std subdir --- std/ws/example_server.ts | 64 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 std/ws/example_server.ts (limited to 'std/ws/example_server.ts') diff --git a/std/ws/example_server.ts b/std/ws/example_server.ts new file mode 100644 index 000000000..0564439c9 --- /dev/null +++ b/std/ws/example_server.ts @@ -0,0 +1,64 @@ +// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. +import { serve } from "../http/server.ts"; +import { + acceptWebSocket, + isWebSocketCloseEvent, + isWebSocketPingEvent, + WebSocket +} from "./mod.ts"; + +/** websocket echo server */ +const port = Deno.args[1] || "8080"; +async function main(): Promise { + 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 => { + 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(); +} -- cgit v1.2.3 From 93f7f00c956c14620ef031626f124b57397ca867 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Wed, 9 Oct 2019 17:22:22 -0400 Subject: Run deno_std tests in github actions --- std/ws/example_server.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'std/ws/example_server.ts') diff --git a/std/ws/example_server.ts b/std/ws/example_server.ts index 0564439c9..cd51ff94c 100644 --- a/std/ws/example_server.ts +++ b/std/ws/example_server.ts @@ -53,9 +53,11 @@ async function main(): Promise { } } ) - .catch((err: Error): void => { - console.error(`failed to accept websocket: ${err}`); - }); + .catch( + (err: Error): void => { + console.error(`failed to accept websocket: ${err}`); + } + ); } } -- cgit v1.2.3