This commit is contained in:
Volodymyr Melnychuk 2019-06-12 14:50:53 +03:00
parent d5fca4e063
commit 45d1ddff1e
3 changed files with 7 additions and 9 deletions

View File

@ -21,8 +21,7 @@ proc cb(req: Request) {.async.} =
await ws.send(packet) await ws.send(packet)
await req.respond(Http200, "Hello World") await req.respond(Http200, "Hello World")
asyncCheck server.serve(Port(9001), cb) waitFor server.serve(Port(9001), cb)
runForever()
``` ```
## Websocket client ## Websocket client
@ -37,8 +36,7 @@ proc sendMsg() {.async.} =
let packet = await ws.receivePacket() let packet = await ws.receivePacket()
echo "received ", packet echo "received ", packet
asyncCheck sendMsg() waitFor sendMsg()
runForever()
``` ```
## Websocket with chronos support: ## Websocket with chronos support:
@ -55,6 +53,5 @@ proc sendMsg() {.async.} =
let packet = await ws.receivePacket() let packet = await ws.receivePacket()
echo "received ", packet echo "received ", packet
asyncCheck sendMsg() waitFor sendMsg()
runForever()
``` ```

View File

@ -107,6 +107,8 @@ when not newsUseChronos:
responce.add("Sec-WebSocket-Protocol: " & ws.protocol & "\c\L") responce.add("Sec-WebSocket-Protocol: " & ws.protocol & "\c\L")
responce.add "\c\L" responce.add "\c\L"
ws.transp = req.client
# await ws.transp.connect(uri.hostname, port)
await ws.transp.send(responce) await ws.transp.send(responce)
ws.readyState = Open ws.readyState = Open
return ws return ws
@ -115,11 +117,9 @@ proc newWebSocket*(url: string): Future[WebSocket] {.async.} =
## Creates a client ## Creates a client
var ws = WebSocket() var ws = WebSocket()
let uri = parseUri(url) let uri = parseUri(url)
var port = Port(9001) var port = Port(80)
if uri.scheme != "ws": if uri.scheme != "ws":
raise newException(WebSocketError, &"Scheme {uri.scheme} not supported yet.") raise newException(WebSocketError, &"Scheme {uri.scheme} not supported yet.")
else:
port = Port(80)
if uri.port.len > 0: if uri.port.len > 0:
port = Port(parseInt(uri.port)) port = Port(parseInt(uri.port))

View File

@ -2,6 +2,7 @@ import news, asyncdispatch, asynchttpserver
var server = newAsyncHttpServer() var server = newAsyncHttpServer()
proc cb(req: Request) {.async.} = proc cb(req: Request) {.async.} =
echo "cb ", req
if req.url.path == "/ws": if req.url.path == "/ws":
var ws = await newWebsocket(req) var ws = await newWebsocket(req)
await ws.send("Welcome to simple echo server") await ws.send("Welcome to simple echo server")