35 lines
1.3 KiB
Racket
35 lines
1.3 KiB
Racket
|
#lang syndicate/actor
|
||
|
;; 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)
|
||
|
|
||
|
(actor #:name 'server
|
||
|
(react
|
||
|
(define vh (web-virtual-host "http" ? 9090))
|
||
|
|
||
|
(assert vh)
|
||
|
|
||
|
(on (web-request-incoming (id req) vh _ ("ws" ()))
|
||
|
(actor
|
||
|
(react
|
||
|
(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))))))))
|