Create a server at Port that calls Goal for each parsed request.
Options provide a list of options. Defined options are
- Port to bind to. Address is either a port or a term
Host:Port. The port may be a variable, causing the system
to select a free port. See tcp_bind/2.
- Instead of binding to a TCP port, bind to a Unix Domain
Socket at Path.
- Affects the message printed while the server is started.
Interpreted as a URI relative to the server root.
- If provided, use this socket instead of the creating one and
binding it to an address. The socket must be bound to an
- Determine the number of worker threads. Default is 5. This
is fine for small scale usage. Public servers typically need
a higher number.
- Maximum time of inactivity trying to read the request after a
connection has been opened. Default is 60 seconds. See
set_stream/1 using the timeout option.
- Time to keep `Keep alive' connections alive. Default is
- Stack limit to use for the workers. The default is inherited
If you need to control resource usage you may consider the
spawn option of http_handler/3 and library(thread_pool).
false), do not print an informational
message that the server was started.
A typical initialization for an HTTP server that uses
http_dispatch/1 to relay requests to predicates is:
Note that multiple servers can coexist in the same Prolog
process. A notable application of this is to have both an HTTP
and HTTPS server, where the HTTP server redirects to the HTTPS
server for handling sensitive requests.