From e1cdf119504fc33848e043f23b752b455f369609 Mon Sep 17 00:00:00 2001 From: Tanner Nelson Date: Thu, 3 Nov 2016 13:44:09 -0400 Subject: [PATCH] websockets docs --- couscous.yml | 7 ++++++ websockets/example.md | 56 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 websockets/example.md diff --git a/couscous.yml b/couscous.yml index 9f2680b2..f60e0a55 100644 --- a/couscous.yml +++ b/couscous.yml @@ -140,3 +140,10 @@ menu: http-server: text: Server relativeUrl: http/server.html + + web-sockets: + name: WebSockets + items: + websockets-example: + text: Example + relativeUrl: websockets/example.html diff --git a/websockets/example.md b/websockets/example.md new file mode 100644 index 00000000..91e506ed --- /dev/null +++ b/websockets/example.md @@ -0,0 +1,56 @@ +--- +currentMenu: websockets-example +--- + +# Using WebSockets + +Below are some examples of WebSockets in use. + +## Client + +```Swift +import WebSockets + +try WebSocket.connect(to: url) { ws in + print("Connected to \(url)") + + ws.onText = { ws, text in + print("[event] - \(text)") + } + + ws.onClose = { ws, _, _, _ in + print("\n[CLOSED]\n") + } +} +``` + +## Server + +```Swift +import HTTP +import WebSockets + +final class MyResponder: Responder { + func respond(to request: Request) throws -> Response { + return try request.upgradeToWebSocket { ws in + print("[ws connected]") + + ws.onText = { ws, text in + print("[ws text] \(text)") + try ws.send("🎙 \(text)") + } + + ws.onClose = { _, code, reason, clean in + print("[ws close] \(clean ? "clean" : "dirty") \(code?.description ?? "") \(reason ?? "")") + } + } + } +} + +let server = try Server, Serializer>(port: port) + +print("Connect websocket to http://localhost:\(port)/") +try server.start(responder: MyResponder()) { error in + print("Got server error: \(error)") +} +```