test_close.nim
1 import news, asyncdispatch, asynchttpserver, asyncnet 2 3 proc cb(req: Request): Future[void] {.async.} = 4 echo "cb ", req 5 var ws = await newWebsocket(req) 6 await ws.send("Welcome to simple echo server") 7 while ws.readyState == Open: 8 let packet = await ws.receivePacket() 9 await ws.send(packet) 10 await ws.shutdown() 11 await req.respond(Http200, "Hello World") 12 13 14 proc sendMsg() {.async.} = 15 var ws = await newWebSocket("ws://localhost:9001") 16 await ws.send("hi") 17 while ws.readyState == Open: 18 let str = await ws.receiveString() 19 echo "received ", str 20 ws.close() 21 22 23 proc sendClose() {.async.} = 24 var ws = await newWebSocket("ws://echo.websocket.org:80") 25 await ws.sendPing() 26 let pong = await ws.receivePacket() 27 assert(pong.kind == Pong) 28 await ws.shutdown() 29 let close = await ws.receivePacket() 30 assert(close.kind == Close) 31 ws.close() 32 33 proc run() {.async.} = 34 var server = newAsyncHttpServer() 35 asyncCheck server.serve(Port(9001), cb) 36 await sendMsg() 37 await sendClose() 38 server.close() 39 40 waitFor run()