On this page:
serve
serve/ ports
serve/ ips+ ports
serve/ web-config@
do-not-return
Version: 4.1.4

1.4 Functional

 (require web-server/web-server)

"web-server.ss" provides a number of functions for easing embedding of the Web Server in other applications, or loading a custom dispatcher.

(serve 
  #:dispatch dispatch 
  [#:tcp@ tcp@ 
  #:port port 
  #:listen-ip listen-ip 
  #:max-waiting max-waiting 
  #:initial-connection-timeout initial-connection-timeout]) 
  (-> void)
  dispatch : dispatcher/c
  tcp@ : tcp-unit^ = raw:tcp@
  port : integer? = 80
  listen-ip : (or/c string? false/c) = #f
  max-waiting : integer? = 40
  initial-connection-timeout : integer? = 60

Constructs an appropriate dispatch-server-config^, invokes the dispatch-server@, and calls its serve function.

The #:tcp@ keyword is provided for building an SSL server. See How do I set up the server to use HTTPS?.

Here’s an example of a simple web server that serves files from a given path:

  (define (start-file-server base)
    (serve
     #:dispatch
     (files:make
      #:url->path (make-url->path base)
      #:path->mime-type
      (lambda (path)
        #"application/octet-stream"))
     #:port 8080))

(serve/ports 
  #:dispatch dispatch 
  [#:tcp@ tcp@ 
  #:ports ports 
  #:listen-ip listen-ip 
  #:max-waiting max-waiting 
  #:initial-connection-timeout initial-connection-timeout]) 
  (-> void)
  dispatch : dispatcher/c
  tcp@ : tcp-unit^ = raw:tcp@
  ports : (listof integer?) = (list 80)
  listen-ip : (or/c string? false/c) = #f
  max-waiting : integer? = 40
  initial-connection-timeout : integer? = 60

Calls serve multiple times, once for each port, and returns a function that shuts down all of the server instances.

(serve/ips+ports 
  #:dispatch dispatch 
  [#:tcp@ tcp@ 
  #:ips+ports ips+ports 
  #:max-waiting max-waiting 
  #:initial-connection-timeout initial-connection-timeout]) 
  (-> void)
  dispatch : dispatcher/c
  tcp@ : tcp-unit^ = raw:tcp@
  ips+ports : (listof (cons/c (or/c string? false/c) (listof integer?)))
   = (list (cons #f (list 80)))
  max-waiting : integer? = 40
  initial-connection-timeout : integer? = 60

Calls serve/ports multiple times, once for each ip, and returns a function that shuts down all of the server instances.

(serve/web-config@ config@ [#:tcp@ tcp@])  (-> void)
  config@ : web-config^
  tcp@ : tcp-unit^ = raw:tcp@

Starts the Web Server with the settings defined by the given web-config^ unit.

It is very useful to combine this with configuration-table->web-config@ and configuration-table-sexpr->web-config@:

  (serve/web-config@
   (configuration-table->web-config@
    default-configuration-table-path))

(do-not-return)  void

This function does not return. If you are writing a script to load the Web Server you are likely to want to call this functions at the end of your script.