On this page:
4.1.1Signature
4.1.2Unit
4.2.1Signature
4.2.2Unit
top
up

4Web ServersπŸ”— i

A Web server is a unit with the web-server^ signature. The most common way to construct one is to provide a web-config^ unit to the web-server@ unit. The most common way to construct a web-config^ unit is to use configuration-table->web-config@ to produce one from a configuration table file, such as the one that is shipped with Racket in default-configuration-table-path .

4.1Server UnitsπŸ”— i

signature

web-server^ :signature

procedure

( serve [#:confirmation-channelconfirmation-ach])(-> any )

confirmation-ach : = #f
The same as serve from dispatch-server^ . The dispatch-server^ signature is an alias for web-server^ .

procedure

( serve-ports ipop)any

Asynchronously serves a single connection represented by the ports ip and op.

package: web-server-lib

Uses the web-config*^ to construct a dispatcher/c function that sets up one virtual host dispatcher, for each virtual host in the web-config*^ , that sequences the following operations:

  • Logs the incoming request with the given format to the given file

  • Performs HTTP Basic Authentication with the given password file

  • Allows the "/conf/refresh-passwords" URL to refresh the password file.

  • Allows the "/conf/collect-garbage" URL to call the garbage collector.

  • Allows the "/conf/refresh-servlets" URL to refresh the servlets cache.

  • Executes servlets mapping URLs to the given servlet root directory under htdocs.

  • Serves files under the "/" URL in the given htdocs directory.

Using this dispatcher/c , it loads a dispatching server that provides serve and serve-ports functions that operate as expected.

Added in version 1.1 of package web-server-lib.
Changed in version 1.6: Use web-config*^ rather than web-config^ . See compatability note.

Changed in version 1.6 of package web-server-lib: Use web-config*^ rather than web-config^ . See compatability note.

4.2Configuration UnitsπŸ”— i

signature

web-config*^ :signature

Contains the following identifiers.

Added in version 1.6 of package web-server-lib.

A safety limits value specifying the policies to be used while reading and handling requests.

Contains the configuration of individual virtual hosts.

Specifies the port to serve HTTP on.

value

listen-ip :(or/c #fstring? )

Passed to tcp-listen .

signature

web-config^ :signature

NOTE: This signature is deprecated; use web-config*^ , instead.

For backwards compatability, web-config^ extends web-config*^ and uses define-values-for-export to define safety-limits as:
#:max-waitingmax-waiting
#:request-read-timeoutinitial-connection-timeout )

Changed in version 1.6 of package web-server-lib: Deprecated in favor of web-config*^ . See compatability note.

Passed to make-safety-limits .
Passed to make-safety-limits as its #:request-read-timeout argument.

Changed in version 1.6 of package web-server-lib: Loosened contract for consistency with make-safety-limits .

procedure

path
[ #:portport
#:listen-iplisten-ip
#:make-servlet-namespacemake-servlet-namespace])
listen-ip:(or/c false/c string? )=#f
Reads the S-expression at path and calls configuration-table-sexpr->web-config@ appropriately.

procedure

sexpr
[ #:web-server-rootweb-server-root
#:portport
#:listen-iplisten-ip
#:make-servlet-namespacemake-servlet-namespace])
sexpr:list?
listen-ip:(or/c false/c string? )=#f
Parses sexpr as a configuration-table and constructs a web-config^ unit.

4.3Configuration TableπŸ”— i

This module provides functions for reading, writing, parsing, and printing configuration-table structures.

The default configuration table S-expression file.

Equivalent to list? .

This function converts a configuration-table from an S-expression.

This function converts a configuration-table to an S-expression.

The configuration table format is:
`((port,integer? )
(max-waiting,exact-integer? )
(initial-connection-timeout,integer? )
(default-host-table
,host-table-sexpr?)
(virtual-host-table
(list,symbol? ,host-table-sexpr?)
...))
where a host-table-sexpr is:
`(host-table
(default-indices,string? ...)
(log-format,symbol? )
(messages
(servlet-message,path-string? )
(authentication-message,path-string? )
(servlets-refreshed,path-string? )
(passwords-refreshed,path-string? )
(file-not-found-message,path-string? )
(protocol-message,path-string? )
(collect-garbage,path-string? ))
(timeouts
(default-servlet-timeout,integer? )
(password-connection-timeout,integer? )
(servlet-connection-timeout,integer? )
(file-per-byte-connection-timeout,integer? )
(file-base-connection-timeout,integer))
(paths
(configuration-root,path-string? )
(host-root,path-string? )
(log-file-path,path-string? )
(file-root,path-string? )
(servlet-root,path-string? )
(mime-types,path-string? )
(password-authentication,path-string? )))
In this syntax, the 'messages paths are relative to the 'configuration-root directory. All the paths in 'paths except for 'servlet-root are relative to 'host-root (other than 'host-root obviously.) The 'servlet-root path is relative to 'file-root.
Allowable 'log-formats are those accepted by log-format->format .
Note: You almost always want to leave everything in the 'paths section the default except the 'host-root.

This function reads a configuration-table from path.

procedure

( write-configuration-table ctablepath)void

This function writes a configuration-table to path.

4.4Configuration Table StructureπŸ”— i

This module provides the following structures that represent a standard configuration (see Server Units) of the Web Server . The contracts on this structure influence the valid types of values in the configuration table S-expression file format described in Configuration Table.

struct

max-waiting
initial-connection-timeout
default-host
virtual-hosts)
#:extra-constructor-namemake-configuration-table )
initial-connection-timeout:natural-number/c
default-host:host-table?
virtual-hosts:(listof (cons/c string? host-table? ))

struct

(struct host-table (indiceslog-formatmessagestimeoutspaths)
#:extra-constructor-namemake-host-table )
indices:(listof string? )
log-format:symbol?
messages:messages?
timeouts:timeouts?
paths:paths?

struct

(struct host ( indices
log-format
log-path
passwords
responders
timeouts
paths)
#:extra-constructor-namemake-host )
indices:(listof string? )
log-format:symbol?
passwords:(or/c false/c path-string? )
responders:responders?
timeouts:timeouts?
paths:paths?

struct

(struct responders ( servlet
servlet-loading
authentication
servlets-refreshed
passwords-refreshed
file-not-found
protocol
collect-garbage)
#:extra-constructor-namemake-responders )
servlet:(url? any/c . -> .response? )
servlet-loading:(url? any/c . -> .response? )
authentication:(url? (cons/c symbol? string? ). -> .response? )
servlets-refreshed:(-> response? )
passwords-refreshed:(-> response? )
file-not-found:(request? . -> .response? )
protocol:(url? . -> .response? )
collect-garbage:(-> response? )

struct

(struct messages ( servlet
authentication
servlets-refreshed
passwords-refreshed
file-not-found
protocol
collect-garbage)
#:extra-constructor-namemake-messages )
servlet:string?
authentication:string?
servlets-refreshed:string?
passwords-refreshed:string?
file-not-found:string?
protocol:string?
collect-garbage:string?

struct

(struct timeouts ( default-servlet
password
servlet-connection
file-per-byte
file-base)
#:extra-constructor-namemake-timeouts )
default-servlet:number?
password:number?
servlet-connection:number?
file-per-byte:number?
file-base:number?

struct

(struct paths ( conf
host-base
log
htdocs
servlet
mime-types
passwords)
#:extra-constructor-namemake-paths )
host-base:(or/c false/c path-string? )
mime-types:(or/c false/c path-string? )
passwords:(or/c false/c path-string? )

4.5Standard RespondersπŸ”— i

This module provides some functions that help constructing HTTP responders. These functions are used by the default dispatcher constructor (see Server Units) to turn the paths given in the configuration-table into responders for the associated circumstance.

procedure

( file-response http-code
short-version
text-file
header...)response?
http-code:natural-number/c
short-version:string?
text-file:string?
header:header?
Generates a response? with the given http-code and short-version as the corresponding fields; with the content of the text-file as the body; and, with the headers as, you guessed it, headers.

This does not cause redirects to a well-known URL, such as "conf/not-found.html", but rather use the contents of "not-found.html" (for example) as its contents. Therefore, any relative URLs in text-file are relative to whatever URL file-response is used to respond to. Thus, you should probably use absolute URLs in these files.

procedure

( servlet-loading-responder urlexn)response?

url:url?
exn:exn?
Gives exn to the current-error-handler and response with a stack trace and a "Servlet didn’t load" message.

procedure

( gen-servlet-not-found file)((url url? ). -> .response? )

Returns a function that generates a standard "Servlet not found." error with content from file.

procedure

( servlet-error-responder urlexn)response?

url:url?
exn:exn?
Gives exn to the current-error-handler and response with a stack trace and a "Servlet error" message.

procedure

( gen-servlet-responder file)

((url url? )(exn any/c ). -> .response? )
Prints the exn to standard output and responds with a "Servlet error." message with content from file.

procedure

( gen-servlets-refreshed file)(-> response? )

Returns a function that generates a standard "Servlet cache refreshed." message with content from file.

procedure

( gen-passwords-refreshed file)(-> response? )

Returns a function that generates a standard "Passwords refreshed." message with content from file.

Returns a function that generates an authentication failure error with content from file and header as the HTTP header.

procedure

( gen-protocol-responder file)((url url? ). -> .response? )

Returns a function that generates a "Malformed request" error with content from file.

((reqrequest? ). -> .response? )
Returns a function that generates a standard "File not found" error with content from file.

Returns a function that generates a standard "Garbage collection run" message with content from file.

top
up

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /