mirror of
https://github.com/janet-lang/janet
synced 2024-12-26 00:10:27 +00:00
4d21b582c7
Handle errors earlier, and allow 0 length packets from UDP but not from TCP. This should more closely follow the exact specs of send and recv calls.
21 lines
556 B
Plaintext
21 lines
556 B
Plaintext
(defn handler
|
|
"Simple handler for connections."
|
|
[stream]
|
|
(defer (:close stream)
|
|
(def id (gensym))
|
|
(def b @"")
|
|
(print "Connection " id "!")
|
|
(while (:read stream 1024 b)
|
|
(repeat 10 (print "work for " id " ...") (ev/sleep 0.1))
|
|
(:write stream b)
|
|
(buffer/clear b))
|
|
(printf "Done %v!" id)))
|
|
|
|
# Run server.
|
|
(let [server (net/server "127.0.0.1" "8000")]
|
|
(print "Starting echo server on 127.0.0.1:8000")
|
|
(forever
|
|
(if-let [conn (:accept server)]
|
|
(ev/call handler conn)
|
|
(print "no new connections"))))
|