1 Dispatching Server
The Web Server is just a configuration of a dispatching server.
1.1 Dispatching Server Signatures
The web-server/private/dispatch-server-sig library
provides two signatures.
signature
dispatch-server^ : signature
The dispatch-server^ signature is an alias for web-server^.
Runs the server—the confirmation channel will be send an exception if one occurs starting the server or the port number if there is none— and returns a procedure that shuts down the server.
procedure
(serve-ports ip op) → void
ip : input-port? op : output-port? Serves a single connection represented by the ports ip and op.
signature
dispatch-server-config^ : signature
value
Specifies the port to serve on.Passed to tcp-listen.
value
Passed to tcp-listen.Specifies the initial timeout given to a connection.
procedure
(read-request c p port-addresses) →
any/c boolean? c : connection? p : tcp-listen-port? port-addresses : (input-port? . -> . (values string? string?)) Defines the way the server reads requests off connections to be passed to dispatch.
value
dispatch : (-> connection? any/c void)
How to handle requests.
1.2 Dispatching Server Unit
The web-server/private/dispatch-server-unit module
provides the unit that actually implements a dispatching server.
Runs the dispatching server config in a very basic way, except that it uses
Connection Manager to manage connections.
1.3 Threads and Custodians
The dispatching server runs in a dedicated thread. Every time a connection is initiated, a new thread is started to handle it. Connection threads are created inside a dedicated custodian that is a child of the server’s custodian. When the server is used to provide servlets, each servlet also receives a new custodian that is a child of the server’s custodian not the connection custodian.