syndicate-2017/racket/syndicate/examples/actor/web-demo.rkt

33 lines
1.2 KiB
Racket

#lang syndicate
;; Simple demo of web driver. See web-demo.rkt for a more realistic example.
(require/activate syndicate/drivers/timer)
(require/activate syndicate/drivers/web)
(require net/url)
(spawn #:name 'server
(define vh (web-virtual-host "http" ? 9090))
(assert vh)
(on (web-request-incoming (id req) vh _ ("ws" ()))
(spawn
(assert (web-response-websocket id))
(stop-when (websocket-connection-closed id) (log-info "Connection dropped"))
(stop-when (websocket-message-recv id "quit") (log-info "Received quit command"))
(on (websocket-message-recv id $str)
(log-info "Got ~v" str)
(websocket-message-send! id str))))
(field [counter 0])
(on (web-request-get (id req) vh ("foo" ,$path))
(define req-num (counter))
(counter (+ (counter) 1))
(web-respond/xexpr! id
`(html
(body
(h1 "Hi there.")
(p ,(format "Your path was ~v, and this is request ~a"
path
req-num)))))))