Skip to content

Commit

Permalink
Fixes the asynchttpserver example some more (nim-lang#16599)
Browse files Browse the repository at this point in the history
I dislike this example a lot (busy looping for FDs to be closed is a very
poor waste of resources) but at least with these changes it's a little bit
better.
  • Loading branch information
dom96 authored and mildred committed Jan 11, 2021
1 parent 0823103 commit 86c05fd
Showing 1 changed file with 7 additions and 8 deletions.
15 changes: 7 additions & 8 deletions lib/pure/asynchttpserver.nim
Original file line number Diff line number Diff line change
Expand Up @@ -18,29 +18,28 @@ runnableExamples:
# This example will create an HTTP server on port 8080. The server will
# respond to all requests with a `200 OK` response code and "Hello World"
# as the response body. Run locally with:
# `nim doc --doccmd:-d:nimAsynchttpserverEnableTest --lib:lib lib/pure/asynchttpserver.nim`
# `nim doc --doccmd:-d:nimAsyncHttpServerEnableTest --lib:lib lib/pure/asynchttpserver.nim`
import asyncdispatch
if defined(nimAsynchttpserverEnableTest):
if defined(nimAsyncHttpServerEnableTest):
proc main {.async.} =
const port = 8080
var server = newAsyncHttpServer()
proc cb(req: Request) {.async.} =
echo (req.reqMethod, req.url, req.headers)
let headers = {"Date": "Tue, 29 Apr 2014 23:40:08 GMT",
"Content-type": "text/plain; charset=utf-8"}
let headers = {"Content-type": "text/plain; charset=utf-8"}
await req.respond(Http200, "Hello World", headers.newHttpHeaders())

echo "test this with: curl localhost:" & $port & "/"
server.listen Port(port)
server.listen(Port(port))
while true:
if server.shouldAcceptRequest():
await server.acceptRequest(cb)
else:
# too many concurrent connections, `maxFDs` exceeded
poll()
# wait 500ms for FDs to be closed
await sleepAsync(500)

asyncCheck main()
runForever()
waitFor main()

import asyncnet, asyncdispatch, parseutils, uri, strutils
import httpcore
Expand Down

0 comments on commit 86c05fd

Please sign in to comment.