summaryrefslogtreecommitdiff
path: root/examples/ws.ts
diff options
context:
space:
mode:
Diffstat (limited to 'examples/ws.ts')
-rw-r--r--examples/ws.ts39
1 files changed, 39 insertions, 0 deletions
diff --git a/examples/ws.ts b/examples/ws.ts
new file mode 100644
index 000000000..f8e711c49
--- /dev/null
+++ b/examples/ws.ts
@@ -0,0 +1,39 @@
+// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
+import { serve } from "https://deno.land/x/net/http.ts";
+import {
+ acceptWebSocket,
+ isWebSocketCloseEvent,
+ isWebSocketPingEvent
+} from "https://deno.land/x/net/ws.ts";
+
+async function main() {
+ console.log("websocket server is running on 0.0.0.0:8080");
+ for await (const req of serve("0.0.0.0:8080")) {
+ if (req.url === "/ws") {
+ (async () => {
+ const sock = await acceptWebSocket(req);
+ console.log("socket connected!");
+ for await (const ev of sock.receive()) {
+ 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);
+ }
+ }
+ })();
+ }
+ }
+}
+
+main();