'app' explainedWhat (app) really does is establish a "session".
When a client (browser) connects to the server, the server forks a child process which sends a response to the request. This is typically a GET request, and the child sends a HTML page to the client. At the same time, the server parent process continues to listen for further requests.
Now, when (app) is NOT called in the child while it generates its response (i.e. it sends a static page), then the child process terminates.
If, however, (app) is called, the child does not terminate. It allocates a new port to listen for further requests from that client, allows login, keeps the session's state, and so on.
So multi-user access to the application is also possible without (app), but each request will be answered in a fire-and-forget style.
So how do you avoid conflict when running independent applications?
To have more than one application running on a single machine, you start several server parent processes. Each of them will be independently listening on its own port. We use 'httpGate' as a port proxy, so that from the browser's view the port is always 80 (HTTP) or 443 (HTTPS), but is relayed on the server to the right port (and thus server process).