Configurable broker tcp/http ports

This commit is contained in:
Tony Garnock-Jones 2019-03-22 12:51:59 +00:00
parent 4732650041
commit 025289500a
1 changed files with 32 additions and 11 deletions

View File

@ -11,17 +11,38 @@
(require/activate imperative-syndicate/drivers/tcp)
(require/activate imperative-syndicate/drivers/web)
(define (main)
(spawn #:name 'server-listener
(define tcp-scope "broker")
(during/spawn (tcp-connection $id (tcp-listener 8001))
#:name `(server-connection ,tcp-scope ,id)
(server-facet/tcp id tcp-scope))
(define *default-tcp-port* 8001)
(define *default-http-port* 8000)
(during/spawn (http-request $id 'get (http-resource (http-server _ 8000 #f)
`(,$scope ())) _ _ _)
#:name `(server-connection ,scope ,id)
(server-facet/websocket id scope))))
(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)))))
(module+ main
(extend-ground-boot! main))
(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))))