2019-03-18 15:34:14 +00:00
|
|
|
#lang imperative-syndicate
|
|
|
|
|
|
|
|
(provide (all-from-out "protocol.rkt")
|
|
|
|
(all-from-out "client.rkt")
|
|
|
|
(all-from-out "server.rkt"))
|
|
|
|
|
|
|
|
(require "protocol.rkt")
|
|
|
|
(require/activate "client.rkt")
|
|
|
|
(require/activate "server.rkt")
|
|
|
|
|
|
|
|
(require/activate imperative-syndicate/drivers/tcp)
|
|
|
|
(require/activate imperative-syndicate/drivers/web)
|
|
|
|
|
2019-03-22 12:51:59 +00:00
|
|
|
(define *default-tcp-port* 8001)
|
|
|
|
(define *default-http-port* 8000)
|
2019-03-18 15:34:14 +00:00
|
|
|
|
2019-03-22 12:51:59 +00:00
|
|
|
(define (main #:tcp-port [tcp-port *default-tcp-port*]
|
|
|
|
#:http-port [http-port *default-http-port*])
|
|
|
|
(spawn #:name 'server-listener
|
|
|
|
(when tcp-port
|
|
|
|
(define tcp-scope "broker")
|
|
|
|
(during/spawn (tcp-connection $id (tcp-listener tcp-port))
|
|
|
|
#:name `(server-connection ,tcp-scope ,id)
|
|
|
|
(server-facet/tcp id tcp-scope)))
|
|
|
|
(when http-port
|
|
|
|
(during/spawn (http-request $id 'get (http-resource (http-server _ http-port #f)
|
|
|
|
`(,$scope ())) _ _ _)
|
|
|
|
#:name `(server-connection ,scope ,id)
|
|
|
|
(server-facet/websocket id scope)))))
|
2019-03-18 15:34:14 +00:00
|
|
|
|
|
|
|
(module+ main
|
2019-03-22 12:51:59 +00:00
|
|
|
(require racket/cmdline)
|
|
|
|
(define tcp-port *default-tcp-port*)
|
|
|
|
(define http-port *default-http-port*)
|
|
|
|
(command-line #:once-any
|
|
|
|
["--tcp" port
|
|
|
|
((format "Listen on plain TCP port (default ~a)" *default-tcp-port*))
|
|
|
|
(set! tcp-port (string->number port))]
|
|
|
|
["--no-tcp" "Do not listen on any plain TCP port"
|
|
|
|
(set! tcp-port #f)]
|
|
|
|
#:once-any
|
|
|
|
["--http" port
|
|
|
|
((format "Listen on websocket HTTP port (default ~a)" *default-http-port*))
|
|
|
|
(set! http-port (string->number port))]
|
|
|
|
["--no-http" "Do not listen on any websocket HTTP port"
|
|
|
|
(set! http-port #f)])
|
|
|
|
(extend-ground-boot! (lambda () (main #:tcp-port tcp-port
|
|
|
|
#:http-port http-port))))
|