mirror of https://github.com/vapor/docs.git
1.2 KiB
1.2 KiB
!!! warning This section may contain outdated information.
Custom WebSockets
Below are some examples of WebSockets using the underlying Engine package.
Client
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
import HTTP
import WebSockets
import Transport
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 port = 8080
let server = try Server<TCPServerStream, Parser<Request>, Serializer<Response>>(port: port)
print("Connect websocket to http://localhost:\(port)/")
try server.start(responder: MyResponder()) { error in
print("Got server error: \(error)")
}