Advertisement
Guest User

Untitled

a guest
Jul 3rd, 2015
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. import os, threadpool, asyncnet, asyncdispatch
  2.  
  3. type
  4. CBOnClientMessage* = proc(message: string)
  5.  
  6. var
  7. onClientMessage {.threadVar.} : CBOnClientMessage # want to shared this
  8. sockServer: AsyncSocket # want to share this also
  9.  
  10. proc handleClient(sockClient: AsyncSocket) {.async.} =
  11. while true:
  12. let line = await sockClient.recvLine()
  13. if "" == line:
  14. break
  15. await sockClient.send("TOKEN")
  16. onClientMessage(line)
  17. echo(line)
  18. sockClient.close()
  19.  
  20. proc startServerTask(port: int, cb: CBOnClientMessage) {.thread.} =
  21. var sockServer = newAsyncSocket()
  22. sockServer.bindAddr(port.Port)
  23. sockServer.listen()
  24.  
  25. while true:
  26. let sockClient = waitFor(sockServer.accept())
  27. asyncCheck handleClient(sockClient)
  28. sockServer.close()
  29.  
  30. proc startServer*(port: int, cb: CBOnClientMessage) =
  31. onClientMessage = cb
  32. spawn startServerTask(port, cb)
  33.  
  34. proc stopServer*() =
  35. sockServer.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement