Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os, threadpool, asyncnet, asyncdispatch
- type
- CBOnClientMessage* = proc(message: string)
- var
- onClientMessage {.threadVar.} : CBOnClientMessage # want to shared this
- sockServer: AsyncSocket # want to share this also
- proc handleClient(sockClient: AsyncSocket) {.async.} =
- while true:
- let line = await sockClient.recvLine()
- if "" == line:
- break
- await sockClient.send("TOKEN")
- onClientMessage(line)
- echo(line)
- sockClient.close()
- proc startServerTask(port: int, cb: CBOnClientMessage) {.thread.} =
- var sockServer = newAsyncSocket()
- sockServer.bindAddr(port.Port)
- sockServer.listen()
- while true:
- let sockClient = waitFor(sockServer.accept())
- asyncCheck handleClient(sockClient)
- sockServer.close()
- proc startServer*(port: int, cb: CBOnClientMessage) =
- onClientMessage = cb
- spawn startServerTask(port, cb)
- proc stopServer*() =
- sockServer.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement