. code-block:: nim
import asyncnet, asyncdispatch
var clients {.threadvar.}: seq[AsyncSocket]
proc processClient(client: AsyncSocket) =
echo "DEBUG: process client"
# stuff ..
proc acceptClient(server: AsyncSocket) {.async.} =
let clientFut = server.accept()
await sleepAsync(100) or clientFut
if clientFut.finished:
echo "DEBUG: client accepted"
clients.add clientFut.read
proc processClients(server: AsyncSocket) =
for client in clients:
processClient(client)
proc main =
clients = @[]
var server = newAsyncSocket()
server.bindAddr(12345.Port)
server.listen()
while true:
waitFor acceptClient(server)
processClients(server)
main()
while true:
poll(timeout = 1)